to monitor the balance of each address, either query bitcoind for the balance of the address, or query a third party api (blockexplorer, blockchain.info).
So I would keep polling bitcoind over and over to keep scanning for deposits to those addresses?
You don't have to poll. You can start up bitcoind with the switch '-blocknotify='<cmd>' and put whatever command you want to run in the place of <cmd>, for example a shell script or python script that asks for the balances of the addresses you are tracking. It will only notify upon each additional block confirmation.