Any ideas? Any faster displays?
It really isn't so much about the speed of the display but rather how the display is updated, how the library communicates with it, and how (or rather when) the communication overhead occurs.
Writing to the LCD can take some time, particularly with i2c.
Unfortunately, the Arduino Print class is completely synchronous so once you call print() it will not return until all the characters have been handled. And for LCDs that means all of them sent to the display.
The amount of time to print characters to the LCD can vary quite a bit depending on what you are doing and how many characters you are writing to the display.
Also, different libraries do things differently than can have an impact on how long it takes to update the display.
For example, the hd44780 library does things very differently with respect to LCD instruction timing and how it handles the i2c bus for doing updates to the LCD
As a result it can update the LCD much faster than other libraries.
On an AVR at 16Mhz, the hd44780_I2Cexp i/o class can write a byte to LCD in 549us (16x2 full display update in 18.66ms)
The LiquidCrystal_I2C library on the same h/w writes a byte to the LCD in 1454us (16x2 full display update in 49.44ms)
That is a nearly 3x difference from just using a better library.
On a esp8266 WeMos mini the time is 486us (16x2 full display update in 16.55ms)
Bump the i2c clock up to 400Khz and it reduces even further.
The AVR using a 400kHZ SCK transfers a byte in 199us (16x2 full display update in 6.76ms)
The esp8266 at 400kHZ SCK transfers a byte in 130us (16x2 full display update in 4.44ms)
So you can see if you use the hd4480_I2Cexp i/o class in the hd44780 library, you can speed things up more than 10x on a faster processor and by setting the i2c clock to 400kHZ.
Even on an AVR by just switching libraries you pickup 3x faster, and if you bump the clock to 400kHz you get close to 7.5x faster.