PS2 keyboard (simply doesn't work after grub. Bah!)
Progress. A bit more experimenting and googling. a linuxquestions thread suggested disabling 'USB emulation' in the BIOS. I had no such option so I tried disabling 'USB mouse' and 'USB keyboard' (both of mine are PS2 anyway). The machine wouldn't boot at all so I reverted that.
Oh, that i8042 error was appearing again. a linux-kernel mailing list message suggested that the i8042 portion of the kernel has some kind of ACPI bug, and passing i8042.noacpi=1 would disable ACPI events on the PS2 keyboard. That was rejected as an invalid command line argument so I tried acpi=off to turn it all off and that did the trick.
Action point: look into this more to see if I can help the developers with diagnostic info to get this fixed properly.
I compiled my own kernel which has sped up booting a huge amount. No initrd nonsense either! Due to limitations in make-kpkg (or my understanding of it) we're using a bzImage (compressed). I'd like to see if I could fit the kernel into a non compressed image, but I don't know which arguments to use.