Yes I did generate lots of 0.000009 outputs to test how small an output amount can be.
But it still appears quite odd to me that bitcoind has spent 10 inputs to pay the transaction amount and additionally 840 freaking inputs to spend as change! It makes no sense. Because of such behaviour I am now unable to send transactions due to all transactions being too large. I guess the only way is to manually construct raw transactions for a situation where I have large amount of dust in my wallet.
It seems odd that it would just spend the entire contents of the wallet... And it doesn't appear that it's a case of needing to include all the inputs to cover the fee.
Bitcoin-Qt certainly doesn't include all inputs automatically... Although you can by switching on the coin control features and manually selecting inputs.
It's possible the specific create or send command you're using defaults to spending ALL available inputs.