I think this link roughly explains the basic idea of my earlier response to this thread:
You just use a named setTimeout (in other words, you assign it as a variable rather than simply starting the setTimeout - see below this post for a clarification) and a mouseover event on the tooltip to destroy that setTimeout if we ever get our mouse over the tooltip before the setTimeout actually fires (which we would not have done in the quick-pass situations you are seeing a problem with). You just need to make sure your setTimeout variable has global scope (in other words, declare it - even without any value - outside of any functions so that it is accessible to all other page functions).
Does that make sense?
You can brush up on setTimeout and clearTimeout use here, if it helps:
//Simply calling a setTimeout:
//Setting a setTimeout call as a variable so we can access it later in order to cancel it:
var my_timeout = setTimeout('do_something',50);
//And then to actually cancel the named timeout you can do something like this: