Never mind. I was structuring my code wrong so the previous cppWallet wasn't deleted from memory before starting with the next (I think that's what was wrong). This works:
from armoryengine import *
BDM_LoadBlockchainFile()
def get_balance(addresses):
cppWallet = Cpp.BtcWallet()
for address in addresses:
cppWallet.addAddress_1_( address )
TheBDM.registerWallet(cppWallet)
TheBDM.scanBlockchainForTx(cppWallet)
fullBalance = cppWallet.getFullBalance()
balance = coin2str(fullBalance)
TheBDM.unregisterWallet(cppWallet)
return balance