There's some pretty severe limitations with all the current rpc APIs to send a transaction, so I think it might make sense to create a more generalized API that subsumes them (createrawtransaction, fundrawtransaction, sendmany)
Arguments it should have:
transactions(fromcreatecrawtransaction) with the difference that if you leavesequenceundefined it uses normal core sequence number picking, instead of 0amountsfromsendmanybut not an object, but an array of outputs (the current object makes it very annoying to implement batched withdrawal logic when multiple payments are to the same address), along with the addition ofsubtractfeefromamountas an option in the objectThe options from
fundrawtransaction, along with the additional ability to pick to broadcast the transaction or not.
And the return should contain the full transaction, txid, fees paid, and location of the change.