Okay, this is an odd one and I'm not sure how things worked for me with this issue in place.
If you remove the edns0 config and restart dnsmasq then the strict order will work.
The problem is that ends0 precludes dnsmasq from regenerating the query and dnsmasq never hears the timeout and the signal to try the next server down the list.
So, for now I'd remove edns0 and go back to conditional forwarding for the local name resolution. Should be able to set cf to point to OPNsense (I forget the capitalization...) and use your local lan domain name.
I'm going to try and see if there is some way to fix this issue, but I don't think it will make it in to a dnsmasq version that would be pulled in to opnsense. Unless we can chat with them and see.
@DL6ER I'll get you on MM for this, I think that ends0 = 32 should have enough information to recreate the query with the full ip and source port.