hfintosc usart
well, at true sleep operation, all clocks are stoped, so the usart will not work...
But some pics, (sorry, I couldn´t check your pic) can stop the main clock but will continue to clock the peripherals, (Including you USART) which is called Idle State (PRI_RUN if I remmber)...
your clock rate could be far upper, for Usart recieving, the actual baud rate, is set by a baud rate generator registers, and need at least a main clock 16 times higher... (as far as I remember)
Also ,check the data sheet, but I think you need to set one additioanl bit, a CREN (continous receive)..
also as blueroom said, the Watchdog has it´s own timer, It can work while recieving data..
Jut a Little question... Why your main application is working at 31kHz? it's too low to work with the usart...