you decipher the domain(s) and IP address(es) the portal uses for sign-in, then you put this info into your unbound.conf as "local-data:" or something similar.
And you are free again to ignore the DHCP provided nameservers, keeping your localhost DNS server address in resolv.conf.
"I think we can do better."
You can and I am sure you will.
What I would like to see is a localhost DNS server that runs on a mobile OS.
Perhaps you run your own wireless router between your wireless-enabled computers and the third party access point. You can send 127.x as a nameserver in DHCP but this only works if your computers can run localhost DNS, e.g., tinydns/dnscache/dqcache, nsd/unbound, etc.
With hostname.if(5)? I've never run OpenBSD on a laptop: mind explaining it (or linking to man pages?)