For custom application development it would be nice to use bitcoind as a node only. Bitcoind supports "no wallet" parameter and txns can be created rather easily using createrawtransaction, signrawtransaction, and sendrawtransaction. Unless i am missing something there is no easy way to find the unspent outputs of an arbitrary address. For now lets ignore non-P2SH/P2PkH outputs.
listunspent only returns unspent outputs for addresses in the wallet.
All the necessary information is in the UTXO (chainstate folder) it just is not accessible from RPC. Am I missing something?
It is indeed in the UTXO db, however, the UTXO db is keyed by txid.
In order for bitcoind to query it for arbitrary addresses it would have to do one of two things:
a) Crawl every tx
b) Produce another DB keyed by address or pubkey and allow that to be queried
a) would be far too time consuming; there are tens of millions of unspent outputs I believe.
b) is not implemented. I believe there is an -addrindex patch out there somewhere which you may find useful.