pulseIn Bug

I suspect the problem lies in interrupt handlers,

An interrupt at the wrong moment can indeed "ruin" measurements, but is your code receiveing bytes while measuring? If no then there are no interrupts...