I am running Opnsense with Unbound DNS and DHCP services. I have set Pi-Hole to conditionally forward to my Unbound DNS, as well as setting the upstream DNS to Unbound.
I have noticed that alot of IoT devices on my network do not resolve to a DNS name. They show up as IP addresses in Pi-Hole. I am wondering if running the Pi-Hole DHCP, instead of on Opnsense, would allow me to rename these to something more suitable and then be able to resolve by name.
While Pi-hole's UI caters for a flat network only, its embedded dnsmasq can still serve more complex network setups, but you'd have to manually set up and maintain it through dnsmasq configuration files.
DHCP considerations in that article seem to be general in nature, but you should probably check with the OPNsense folks for a more knowledgable answer.