"Public" is one thing, associating a name to a hash is something else entirely. Keeping in mind that a user can have unlimited wallets and send coins between them on the fly...
You can certainly try to keep a secret for a very long time. But the secret nature of bitcoin is waaaaay exaggerated. If you use it, you can be traced often."I have 300 wallets" is possible, but not convienent
Basic bitcoin security is new wallets for each transaction. It is still a very hard problem just looking at the block chain that if this hash sends coins to that hash who the owner of the recieving wallet is. Is it the same person filling a new wallet or a transaction?