Raspberry Pi minimum sleep time
Unfortunately, there's really no good way to do this. When you call sleep, a system call is made and the OS goes off and runs other programs while you sleep. But the OS scheduler has a minimum timeslice it will do that on, and that's on the order of milliseconds, not microseconds. As a result, very small sleeps will tend to either not happen at all or take far too long, which is what you're seeing.

You have two realistic options: Write a kernel module that won't suffer under the same scheduling constraints, or use an offboard processor, such as a cheap 8-bit MCU to do the decoding, sending the results back via a serial port. I would recommend the latter.