I am primarily trying to understand the RPC API better, and this entire post definitely accomplished that, as well as giving me a better understanding of the underlying protocol.
We may be getting off-topic in this post, but what got me started down this path is a project in which I need to keep track of balances in different accounts in the same wallet and move funds between them as part of a business workflow. The problem is that the actual account construct is not well-suited for this because apparently the client does not handle large numbers of accounts well:
https://bitcointalksearch.org/topic/bitcoind-accounts-best-practices-321051
So my next-best approach would have been to use addressed in lieu of accounts. In that situation sendtoaddress does not work because it does not give me control over which addresses (er... outputs, now that I know what I'm talking about thanks to you guys) the funds are coming from. This is why I started looking into creating raw transactions.