No matter how much things are cached, some things cannot be cached. So the next level up, to remain as scalable as possible, is to distribute the load both for finding out how to access the data or services and for actually accessing them. A hierarhical cache or a web of caches could help here as well. But for scalability, we have to assume the size of each cache remains relatively constant.
The issue of URN scalability should be divided into two separate issues: the scalability of name assignment and of name resolution. Assignment of trillions of names is not really very difficult, in my opinion, given even a modest subdivision of the name space. Having a large enough name space is also fairly easy, but there should probably be at least some subdivision of the name space if only to enable efficient assignment of names. The implication of having a structured name is that not all possible names will be used, so the name space needs to be larger to accomodate the wasted space.
The real problem comes in the resolution of URNs since that happens many times for each document that has been created. Therefore, the scalability requirements for URNs must be geared toward solving the name resolution problem, not the name assignment problem.
To be scalable, I believe the name space must be hierarchically structured. Whether the hierarchy is at the level of naming authories or within each naming authority (as a prefix to the opaque string) makes no difference as long as it is a standard, public hierarchical scheme. That is, it is not sufficient for the hierarchy to be hidden within opaque strings, known only to name resolvers. The reason for this standard, public hierarchical scheme is so that resolution of URNs may be delegated to resolvers that either know how to resolve a particular URN or know where to delegate the resolution, and furthermore so that clients may also know which resolver to go to directly, or which one is close if a direct one is not known.
For the same reasons that DNS cannot be a flat name space, URNs cannot be a flat name space. The URN resolution problem is several orders of magnitude more difficult than domain name resolution.
In IETF documents, I've seen references to the *possible* need for a hierachical name space, but I believe scalability *requires* it, or at least, I haven't seen any argument to the contrary.