The deposits all get left in the unique addresses. So now I'm writing code to allow people to withdraw money and unless their wallet has enough funds then I need to somehow pull funds from multiple of the unique deposit addresses.
This doesn't make sense. You want to allow people to withdraw more than they deposited? I don't think that's what you mean. I think you are worried about how bitcoind will fund withdrawals. Bitcoind will automatically grab coins from whatever outputs there are to fund any withdrawals. It will not limit itself to certain addresses.
You will need to track how much a person has deposited, how much they've spent and how much they can withdraw.
Also avoid the bitcoind "accounts" feature. That's just crap.