There is tor-resolve which does dns lookups over tor, but it can only look up A/AAAA records and not all the other fancy records.
(grumble, oh this tool has the e, unlike the configuration file.)
I'm imagining running 2 copies of unbound. One is hooked up i2p inbound tunnel -> local unbound -> Google/Cloudflare and serves remote users. One is hooked up local unbound -> local guile shim -> remote i2p -> remote unbound and does cached lookups remotely with volunteer guixrouters. So none of the lookups you do actually come from you, and all the lookups you do are done by random remote sites.
stuff like i2p or tor have a lot of latency, so it'll slow down looking up new sites.
unbound does have a cache so it should keep addresses around for a while.
Yep, that's exactly the reason to put unbound in the mix, when you reboot or otherwise restart unbound, you'll have some latency increase while you cache up common DNS lookups, but after that you only have latency when you hit a new DNS name.
Also you'd probably want to have 4 or 5 upstream servers and rotate them occasionally by having the guile shim find new ones and rotate.
I think actually "socat" could be used to do the networking, so the guile script could just be responsible for setting up the socat tunnels, and maybe rotating them on some schedule. Also maybe doing the lookup from the network database of guixrouter instances. However that would work.
I thought I remember you could write extensions to unbound in python or in something that can be dynamically loaded.
They don't have the docs obviously online though so i can't see how complete it is right now.