Since I'm bored I'll go ahead and give you a fully working script that should avoid any performance issues:

Code:
on ^!*:JOIN:%hide.channels:haltdef

on ^!*:PART:%hide.channels:if ($nick(#,$nick).idle > 180) haltdef

on ^!*:QUIT:{
  var %i = $comchan($nick,0)
  while (%i > 0) {
    var %c = $comchan($nick,%i)
    if (($istok(%hide.channels,%c,44)) && ($nick(%c,$nick).idle > 180)) haltdef
    dec %i
  }
}


I understand that you'd rather see this implemented directly in mIRC, but my personal opinion is that it is unlikely to happen. This is your best alternative.