As far as the interrupt routines go, it looks like it should work.

But the limiting factor is the number of bytes you're sending the results with.
Even at 115200, sending a string of 10 characters will take over 800us. With trying to find both high and low transitions you double that (1600us). So you'd be limiting the frequency to around 600hz.

I don't think a buffer and TX handler would help speed it up, because it's just the total amount of data being sent that limits it. A buffer would just over-run if it couldn't keep up.

HTH,