Is there any way with the current Bitcoin-Qt client to share the block chain with multiple wallets? Ideally I'd like to be able to do that when the multiple wallets are running concurrently. From looking at the directory structures, about the only way I can see is if you swap out wallet.dat with the desired wallet when you start it up. I now have about 5 copies of the block chain on my computer…I'm looking for options to consolidate around a single copy of the block chain.
I'd love it if the wallet functions and the client functions could be separated into two different processes. Another way of solving it would be to enhance the Bitcoin-Qt such that it could manage multiple wallets (even just a feature to open a different wallet.dat file from the file system).
In multiple --datadirs you can make a symbolic link to a central blockchain dat and idx file, as long as you don't attempt to run multiple instances of Bitcoin. This may result in transactions being missed, but I believe that one of the recent features added to Bitcoin for wallets to store a "last block seen" pointer so it can rescan from that point if a fully updated blockchain is used will mitigate this (this feature is also useful when restoring wallet backups, etc).
Each copy of Bitcoin would try to open the blockchain file and write to it and update blocks; running multiple Bitcoins accessing the same database file at the same time is not going to work. It is possible to have multiple users access one Berkeley database, but Bitcoin is not going to be aware of other Bitcoin client's write activities, and for the scale of rewrite to support this you might as well just write a multiple-wallet-supporting Bitcoin.