The CL package system allows local aliases. How do you think you can be in the default cl-user package yet refer to cl:cons as just cons?
Firstly, the exported symbols in one package can be made visible in another package through package use. Secondly, a symbol from package A can actually be made present in package B via import: http://clhs.lisp.se/Body/f_import.htm
The context was: "FOO can be generic and applied to different types of objects." That only works if everybody uses the same symbol FOO. Library:FOO is a different symbol and won't be combined automatically, so you must package-qualify.
(Regarding local aliases, I was talking about local package name aliases, which could make it somewhat less awkward.)
but now you're back to (lottery:draw x) which isn't any shorter than (lottery-draw x), so the point about names not being namespaced to the object they are applied to remains.
Regarding packages, sometimes I wonder whether package names could have been symbols: that would allow for gensymed packages, as well as hierarchical packages.
I implemented a package system influenced by CL's. I thought of the idea of package names themselves being symbols (themselves interned in some root package that has no name, or perhaps has one of those symbols as its name). I couldn't come up with a good set of requirements that would make things better, so I didn't bother with it. It just seemed like self-refererence for the sake of self-reference, like some new appendix to D. Hofstadter's GEB. :)
I once made a kind of "package Swiss Army Knife" reader macro for Common Lisp which lets you do cool things. It's reasonably well documented in a header comment.
It might be up your alley, since you're working on a package-related reader macro:
Firstly, the exported symbols in one package can be made visible in another package through package use. Secondly, a symbol from package A can actually be made present in package B via import: http://clhs.lisp.se/Body/f_import.htm