IMO mIRC should never have code which results in something locking out indefinitely. IMO everything should have some sort of timeout which is no longer than a typical users patience level for that function - so something that locks up the UI should have a short timeout, whereas something like /list might have a much longer timeout. But I would say that the user has to take some responsibility for not issuing too many simultaneous /list commands. And bandwidth and server power have both increased substantially over time so perhaps lagging is less prevalent too.

So perhaps 600s would be a more reasonable timeout.

Alternatively, how about a command to cancel the current /list so you can issue a new one.

Finally, how about the message being something like "* /list: Listing in progress - wait xx seconds for timeout or cancel with /cancellist."