One idea I've been throwing around is to replace files with HTTP resources; everything is a resource. Effectively Plan9s idea, but the time might be right.
If you go that route, bind unique objects to Uniform Resource Names (URN), and then have a mapping to instantiations (URLs), so that the same resource can be found in its multiple locations. Would help immeasurably for a distribution model.
Believe it or not there was a system at Sony Pictures Imageworks that worked like this - no idea what it was doing under the hood though. Worked great in practice though - every possible production resource was a URL that started with spref:// iirc.