It looks like you can feed an unsigned raw transaction and a list of private keys into the new bitcoin client and it will sign and send the transaction without storing the keys in your wallet so this seems like a good solution for sending. I can use my perlfoo to create the raw transaction.
Yeah, you can even do the signing in perl without bitcoind at all if you have the private key(s), I've been crafting/signing raw transactions that way for a while, can probably come up with some sample code if you want. The harder part is finding the transaction inputs for the address...