The Wire library is blocking so every i2c transmission blocks until complete. Your best bet would be to see if you can speed up the clock (400kHz vs. 100kHz) and minimize what you are changing on the screen and only update the bare minimum. You could also only do a single transmission each time through loop() [set screen position, set color, set text, etc.] but that might become a lot of work.
It may be easier to catch your pulses using interrupts and then just deal with them when they happen.