How can i effectively split large outputs into smaller ones? I have a wallet that pays lots of small amounts in the range of 0.x to 5 BTC.
I filled the wallet with one transaction of 50 BTC, so there is only one large input contained.
Now when i transfer 0.5 BTC anywhere, the transaction has two outputs - 0.5 for the receiver and 49.5 change.
Problem is that as long as this transaction is not confirmed the wallet is more or less blocked, as it only contains 49.5 unconfirmed balance.

So basically I end up with one transaction per block, as i need to wait for the change to be confirmed until i can create the next tx.

Edit:
Note that I am using the rawtransactions API and when constructing a transaction i only want to use confirmed outputs (from "listunspent" command) as inputs for the new tx.

What is the best way to split the big output in the wallet into something like e.g. 10*5.0 BTC?
The protocol and the standard client allow you to spend your own unconfirmed change. Multibit didn't allow this, but I believe it's a recently/soon added feature.

When constructing your transaction manually there is little advantage to choosing confirmed outputs.

If you do want to split your outputs, you can do it with a sendmany transaction. The Bitcoin-qt GUI allows you to do this ("Add Recipient"), which can scale to several outputs. For a larger number of outputs you can generate the command programmatically and issue it with the command line.

Bitcoin-qt does not allow you to pay an address multiple times in the same transaction. There seems to be little justification for that, and it may be possible with the raw transaction API. Alternatively, you can generate several addresses and split the amount between them.