Can you reset 'used' addresses that were actually never used?
afaik, there isn't.  If the wallets are just for testing, you could remove wallet.dat periodically and start over.  I guess the main reason for doing this would be if you are doing automated testing with tens of thousands to millions of addresses being created and it starts to slow performance significantly.

or you could always hack bitcoind and modify getnewaddress to return the first available address without any balance.  Or create a new API for this.