Accumulating balances would just require you to query all userA-* addresses and add the results. I don't see a problem with that.
The more you think about it, the clearer the picture becomes. The only question is whether it is the best practice solution?
Suppose a user would like to one day pay off his entire balance, which is shown to him from the database but is located at, say, 4 addresses. Doesn't he then pay transaction fees four times? Another question that comes to my mind now: How do I deal with the accumulated credit on different addresses of a user in advance?
More about inputs / outputs here: link and link.
This means if you don't use the exchange model, you can also use multiple balances of a user (in your example 4) as inputs and send them to one output address. That saves fees compared to doing 4 individual transactions, but costs more than a 1-input transaction due to taking up more space on the blockchain.