1. Wi-Fi is of course capable of reconnecting fast, so you don't even notice it. When you see a multiple seconds worth of a connectivity gap, it's likely not because Wi-Fi is stupidly waiting. Most probably it's radio interference, or the access point can be overloaded and have not enough resources to service all the connections, so it drops some.
2. Wi-Fi is a transport layer; equally TCP and even HTTP do not offer a generic mechanism for logging in and accepting terms. This needs to be addressed at a different level, but I totally agree, it would be great to have a reasonable standard that's open and is better than a captive portal.