Overall, I really like this idea!
I am a bit worried by the enum problem: the proposal increases uniformity in the common case, but it also creates more special cases.
For locality, I think we can use code style to gain it back!
I think most people, myself included, write extern crate, use and mods in this order:
extern crate foo;
use bar::baz;
mod quux;
and then struggle with putting use self::quux::Spam either with other uses, or with mod quux; Just today I’ve found out that there’s in fact an alternative style of putting mods before usees:
extern crate foo;
mod quux;
use bar::baz;
use self::quux::Spam;
I personally find this style much better (although I’ve been using the opposite one for several years!), and, with this proposal, it’ll actually provide locality as well because, typically, you’ll only need to scan a small mod section before uses.