One more I was just thinking about: when selecting coins to create a new transaction, does it make sense to use transactions which are not yet in a block?
Only if you're sure that the transaction you're spending will eventually be included in a block. Bitcoin spends 0-confirmation transactions that it has created, but never 0-conf transactions from other people.
These transactions will have very low (maybe 0) priority, but this will increase as the inputs age.
Similarly, does the official client clear out orphan transactions after some period if they haven't made it into a block?
No, but that would be nice.