I actually thought about a caching proxy type layer a while back that would sit in front of the media hosts as an alternative to using commercial CDNs. I was thinking about it more from the point of view of improving performance but the same sort of concept could work. Proxy would serve the content locally if it has it, otherwise fetch from the media hosts using some sort of discovery mechanism. Clients could have a list of proxies in the same way as they have a list of relays so if one goes down it uses another one.
Discussion
There can be many ways, and translation layers/methods I guess πΆπΎπ€·ββοΈ