Good idea to consider all of these factors and look at decentralization on a scale. Here are some comments/corrections related to Primal:
1. The Primal client does connect directly to relays (in addition to using a caching service). The ability to work with a caching service is an extension of standard Nostr client capabilities (not a replacement).
2. There is no algorithmic filtering of feeds by default. Of course, when the user selects "trending", "most-zapped", etc. those are aggregated.
3. If our idea of open and interoperable caching services for Nostr takes off, imo that would be a significant boost for censorship resistance and decentralization.
I outline our approach in more detail here: