Is this supposed to be a big deal? I use NixOS as a source distribution (nix.settings.substituters = lib.mkForce [ ]) and I get failures when fetching sources pretty regularly. Sometimes the URLs are missing, sometimes the hashes have changed. My usual fix is to fetch the source from cache.nixos.org with nix copy.
I'd say the right answer is to move/add a content addressed model/system for obtaining sources.
Not really. Content-addressed implies that if the content changes, so does its address, such that returning a different result for the same address is a hard protocol violation.
Having a content hash as (part of) the address is common way to this.
IPFS multihash is a well-known example. As opposed to HTTP.
I'd say the right answer is to move/add a content addressed model/system for obtaining sources.