Yes, you are quite likely overloading the CPU, doing too much in an interrupt context, so there's not enough time to service the serial driver interrupts. Also, the serial driver interrupts probably lock out your timer interrupt function at times, too.
You really should do almost nothing in an interrupt function. Set a flag, and the pick up that flag in your loop() function, for the best sharing of time/resources. Beware, though, that long print() statements on the serial port will lock out other code from running for a while, so they will introduce jitter. Try sending only short codes for debug status.