The problem of unspendable outputs can be fixed with dust collection algorithms in the clients.
With every transaction the coin selection algorithm can check to see if any dust outputs can be included as an input without causing the transaction to require a higher fee.