How would enhanced prefixes work to load several versions of the same classes ?
For Fruit::Orange and Color::Orange, we have the problem that the English word is overloaded but the program entities could perfectly be named OrangeFruit and OrangeColor. Your proposition makes it more practical to invent and work with unique names indeed, but if I understand correctly, your proposal moves the problem of clashes in class names to clashes in prefixes.
For me, name spaces are about differentiating classes that can only have the same name, because they actually are the same concept, only in a different shape.
E.g., if for some reason I need to load both Seaside 2.6 and 2.8 in a single image, I'm still stuck because they will both use Seaside:: or WA:: as a prefix. I would need to change the prefix on the fly while filing the code in (or loading it from MC) and, symmetrically, to rename the client classes to use one prefix or the other.