You said, that cause of some mysterious (at least currently ;-) problems a semantic-parse-run is not interruptable by keypress (so here the interruptable idle-stuff does not work correctly - right?
In the meanwhile the new macro `while-no-input' of the current Emacs 22 CVS (subr.el) is stable and works well on all platforms. maybe using this macro instead of your own `semantic-exit-on-input' would fix this problem?! do not know but just a hint....
As a sideeffect using this new macro could produce cleaner code, because you are not resonsable on calling stuff like `semantic-throw-on-input'.. just place your code within `while-no-input' and bob will be your uncle....
disadvantage: Not available in XEmacs...:-(