It could simply be fixed with a small script and +i in options dialog turned off

on *:connect:{
  ; set a tempvar for the raw event that it only triggers if its set
  set %checkmode $+ $cid $true
  ; request all modes set on you
  mode $me
raw 221:*:{
  ;if its set -> continue
  if (%checkmode [ $+ [ $cid ] ]) {
    ; remove it since its no longer needed
    unset %checkmode $+ $cid
    ; halt the output
    ; check if i(nvisible) is now in usermode - if not set it
    if (i !isincs $usermode) { mode $me +i }
; remove the old vars that may be left from the last time
on *:start:{ unset %checkmode* }

Note: It won't work if the server is hiding the +i flag too.

one step closer to world domination