Well, there's a raw event that's triggered when a /who event is finished, so you can use that as a signal to start another one, and it's up to you how long of a delay is safe.
$chan(#channelname).inwho can tell you if there's a /who in progress, but it only tells you for the 1 channel, so you'd need to keep track separately for which channels you've sent a request.

These are useful identifiers:
$nick($chan,0)
$ialchan(*,#,0)

The 1st one tells you how many nicks mIRC things is in there. Which can be different than reality for some networks who have some kind of invisible auditorium mode.

The 2nd one tells you how many of those nicks are in the IAL.

If the 2 numbers match, there's no need for /who, though the server would still spam you with the reply if you asked for it.

I think Racoon has made some scripts in the past to manage this more efficiently, such as estimating when you're better off asking for info about the 4 nicks you don't have than to ask for info for the whole channel even if you already have 90%