a) is not as huge an overhead as you make it out to be. It's already done.
B) no, this is the part you get wrong, indexers(seperate infra only for discovery) is going to centralize, that has nothing to do with users and their relays, users can host their own relays and write only to them, and the protocol still works.