So when there is a large transaction, it has to move the addresses for each coin and track the move? I never completely understood the block chain part....
Each block generated on the block chain creates a new "input" that input has to stay whole until it is broken apart.
So when you have a block found you don't really get X.XX coins you get an input valued at that number of coins.
Then when you spend it, it gets broken into "outputs" of various values according to the ssize of the original input and what you spent.
The piece you are spending is now owned by the receiver, and the rest of the split input is returned to your account.
Those outputs are held until you want to spend the coins, when the wallet selects from your available outputs something close in size to the amount you want to spend. The selected outputs are then used as the inpts for that spend, and the cycle continues, as each original input (coinbase) gets split into smaller and smaller outputs.
If you mined 50 12 XPM blocks on a machine, your wallet would say you have 600 XPM. But what's really going on is you have 50 12 XPM outputs under your control. IF you send them all to another wallet, the generated transaction will contain 50 inputs, and one output to the new wallet.
In this way the inputs are recombined so that we don't literally have to track an input/output for every fractional coin that has been re-used.
The wallet calculates a TX fee based on the size of the script required to combine the inputs into an output and return the change to the sending wallet. (ignoring some other factors like coin age).
This is why when I tried to send 20m IFC created from a ton of <100000 coin inputs I got charged a TX fee of nearly 10 IFC.
So someone that had mined a couple hundred blocks into one wallet and then tried to send all of their coins to a single receiver would cause a very large transaction to be written.
I hope that didn't add too much to your confusion