But I don't know if I've set a setting wrong somewhere, if I disable HAproxy temporarily all traffic coming in on my WAN interace are served the OPNsense admin pages instead.
So you recommend placing NAT in front of HAproxy? I understand that turning HAproxy off in that scenario the NAT would prevent the GUI taking over the WAN ports. Just a teeny weeny bit convoluted IMHO Out of curiosity, is the GUI still in that case trying to listen on the WAN but now NAT is "winning" just like HAproxy is winning in my current scenario?
The GUI really shouldn't bind to the WAN interface by default should it?
Another option would be to change the OPNsense WebGUI configuration to use a non-standard port instead, for example TCP port 9999. This would mean that you need to access the OPNsense WebGUI through https://opnsense:9999/ – and possibly add some firewall rules to allow it.