You are probably better off reading PIR1.5 in your loop. This is a flag that is set whenever the USART has a character in the buffer. It is extremely fast and doesn't waste time if no characters are waiting in the buffer. Just Put a 'IF PIR1.5 THEN...' in your main loop. If it is set, then go to HSERIN and read the characters. Put a small timeout on the HSERIN so it jumps out if ALL the expected characters aren't read.
Of course, this technique generally works best if the USART isn't going to get flooded with a continuous stream of characters.

The PIR1.5 flag gets set whenever the first character comes in, but the buffer holds up to two characters, so you actually have two character "times" to get the buffer read. The HSERIN command clears PIR1.5 when the character(s) are read.