For the record before this topic gets closed off I think this is a problem with iOS 16. After I changed the IPv4 settings on my Pi-hole everything appeared to be working. However my iPhone is the only device still is bypassing the Pi-hole. I compared to the other iPhones in my house and I'm the only one running iOS 16. I upgraded one of the other iPhones to iOS 16 and BOOM same issue.
Within the iPhone settings I've tried turning off the "Private Wi-Fi Address" and "Limit IP Address Tracking" options, but that did not work. I presume this is Apple trying to be overly clever, that if a DNS request gets sinkholed from the first server it tries one of the other DNS servers. Or perhaps it just broadcasts the request to all available DNS servers. If I change my iPhone DNS settings from dynamic to static and I point it at the Pi-hole all is well with the world and the blocking works as expected.
I know I could solve this across my network by making my Pi-hole the only DNS server on my router. However if for some reason the Pi-hole goes offline I'd lose all DNS.
SO it looks like for now I'll have to just statically set DNS on my devices running iOS 16 and I'll keep my ear to the ground for a better fix.