Why so long?
Because the wallet is massive
... and because bitcoind's wallet code hasn't been optimized for massive wallets. "patches welcome"
(although I think the wallet code needs a complete rewrite, we've learned a lot over the last couple of years and need wallets that are much easier to back up and keep secure).