It also strikes me that the current timer system could quite easily cancel out previous timers if commands are sent quickly, which may or may not be desired... Does MAME/MESS provide a way of seeing if a timer has cancelled one which was already running? I guess some commands could quite easily be being lost that way...
It isn't either of the things you've proposed. I would suggest looking at an error log before theorizing further - the CD-i can't perform any other disc access commands while CDDA is playing, so that's a non issue. Also, the LCD handling is fine, there are 22 lines of blanking at the start of each frame. I'm just choosing to shove LCD drawing into those 22 lines and to set the visible area to show it rather than just handling ICA at line 0 and setting the visible area down further.
Ok, that wasn't really obvious from the code.
As for the error logging, nothing stands out, the second theory was actually more related to the crashes that happen when you're repeating actions, or doing things quickly. Othello is a good one to crash if you try quickly flipping between the screens, if you take your time it's fine.