Well, I just Daily WTF'd myself.
In head scratching why a high interrupt rate caused (a) corruption on the LCD and (b) something that looked like stack corruption, I decided to look at the timing diagram for interrupt acknowledge. I had come up with many bizarre (and wrong) theories about the LCD corruption (random characters, things appearing in the wrong place etc). It also all feeds back to my problems with the PIO a while ago.
It is easier to change the specification to fit the program than vice versa.