It continues to be my opinion that the package system needs versioning with dependency version resolution. The NPM system wouldn’t work, since it can maintain multiple different versions in a project at the same time, but that’s probably a bad idea, anyway. The Bower, Clojure, and Ruby package versioning systems would be compatible with Racket’s concept of a package, and they work well. The current package management model is, in my opinion, incredibly dangerous.
Still, that would be a major project, so that aside, I agree that the backwards-compatibility story in Racket is subpar but can still be improved without a complete overhaul of the system (though perhaps not solved completely). As you mention, Clojure is basically prefix-in by default, but it does have a way to require identifiers without prefixing. I don’t think this is an intrinsically bad system, but it’s incompatible with the standard library’s naming conventions (i.e. racket/vector identifiers would need to be unprefixed so you could import them with (prefix-in vector- racket/vector)).
Just some musings of mine—this is a problem I’ve spent a sizable amount of time thinking about, although I haven’t done much to try and solve it.