`ENSCacheProvider` and `AlchemyProvider` are relatively standalone components, and can safely be rendered higher in the tree.
On the other hand, `TunnelbrokerProvider` now handles notif sending, and as such is tightly coupled with business logic. We should render it lower in the hierarchy.
This diff solves [ENG-9641](https://linear.app/comm/issue/ENG-9641/ens-resolution-failing-for-local-dm-notifs) by making sure the DM notif-sending code in `TunnelbrokerProvider` is able to access the `ENSCache` in `ENSCacheProvider`, and the Farcaster username resolving code in `NeynarClientProvider`.