I do think the wallet encryption is a waste of effort. But a side benefit is that the design of bitcoind has been pushed toward supporting addresses it thinks are "mine" without needing to know the actual private key. That has some good use cases.
That notion of 'mine' can and should be part of the wallet (or in that tier) not twisted up in the public global data model.
I do think the local blockchain and wallet should be completely independent. However, this index, if added, would put bitcoind within reach of offering features where someone can implement their own wallet on top of bitcoind. The built-in wallet, in such a case, could be completely ignored. If this index gets built, bitcoind could easily support a "give me all unspent tx's for these addresses" RPC command, which would make a third-party wallet app on top of bitcoind much more feasible. Another RPC command to dump a transaction to the P2P network, and a way to get notifications/callbacks of incoming transactions/blocks would seal the deal.
tl;dr: many of the built-in features are far from the best implementation, but given this index and a few other trivial RPC commands, those built-in features can be ignored, replaced, and left for deprecation.
Is there a thread discussing modularization of the Satoshi client? I think a lot of people have simply focused their attention away to alternatives: libbitcoin, node.js bitcoinjs, and various web clients.
I agree regarding Firstbits. I think it'd be great to see it in a 3rd-party client, but I don't think it should be placed in the standard client yet. Although, just FYI, the algorithm has stayed exactly the same since Firstbits was released. It's just, no one except myself knew how it worked with collisions in the same block when that question arose.
I'd like to see a discussion started though. I think awareness of firstbits needs to increase. I introduced a few developers who seemed surprised but immediately interested. As for collisions in the block, I thought they were first ordered within the block and then later assumed to be simultaneous within the block. There was a slight word-change to the algorithm, at least enough that someone had to make a change (maybe puik or genjix?).