You should only have to access SCI0SR1 once in the statement, but you are ignoring the overrun flag. Is it possible that some lengthy interrupt occurs in mid transmission causing you to receive two bytes before the first one is read? If you have an overrun you would lose the latter bytes rather than the first one.
Test for the OR flag separately from the RDRF flag to see if you are getting an overrun. Also it may be worthwhile to make sure you are not seeing any of the other error flags (corruption due to noise etc.)
Remember that unless you explicitly allow it the S12 does not support multiple level interrupts so the priority of the SCI receive ISR is irrelevant if another interrupt is already running.