Since last time I dabbled in bitcoin using a single address wallet (using fractions of coins gained from captcha faucets), I've learned about new things like change addresses. I understand when you make a transaction you pay the address' full value and the change is sent back to it or preferably to a new address for the sake of everyone's anonimity.
So let's say you have a wallet with 10 addresses and 20 change addresses. After a while you end up having your collective wealth spread out over all 30.
Now comes the time to pay someone an amount larger than held by any individual address you have.
Does your bitcoin client somehow pool the money from the addresses you control together and funnel it into a single transaction to your intended recipient with a single transaction fee? I thought this was impossible by design since an address can only spend the coins it directly owns and a transaction has 1 source address.
Does your client first need to gather the btc in your individual addresses into a single new address through n transactions and then spend that new address with another transaction? I could have to pay the transaction fee up to 31 times for a single payment to somebody.
Honestly I've gone over a dozen sites, wikis, etc and this stupid question isn't answered anywhere, directly or otherwise. What I know about it (addresses can only spend the coins they control and a transaction has only 1 source and 2 destinations) conflicts with reason (only needing to pay for 1 transaction since you control all the addresses that control btc you want to spend).