How many addresses can be handled reliable in one wallet?
There isn't a problem with storage but there is a problem with the computation time necessary when constructing spend transactions which involve a large number of inputs from your wallet. 

This is a problem that is evidenced by those who run Martingale betting bots against SatoshiDICE for instance.  After they get several thousand bitcoin addresses with transactions, their subsequent bet transactions that draw from those coins start to crawl.

A future release of the Bitcoin.org client will address this by switching from BDB to LevelDB.  Additionally targeted for future release is "ultraprune" which will lessen the storage requirements as well.

In the meantime, InstaWallet is one service that was able to come up with a solution that mitigated the problem.  They might be able to offer some suggestions.