Is there some way I can remove or cancel a poorly crafted raw transaction
You can perform wallet surgery to remove a transaction so that the client will not attempt to re-broadcast it. Pywallet gives a delete transaction option.
to unfreeze its inputs?
If the transaction did get relayed by other nodes, your client will probably discover that transaction and thus those inputs will again be locked. But eventually this transaction will get included in a block.
You can check Blockchain.info to see if your transaction was relayed to a node that they listen to.
-
http://www.Blockchain.infoThere are free relay nodes which will relay your transaction regardless of whether or not a fee was paid.
-
https://en.bitcoin.it/wiki/Free_transaction_relay_policyThe right solution is the "child pays for parent", in which another transaction can be made (by the recipient of the transaction) and the fee paid in the second transaction will help cause the "parent" to be included in a block as well. This is not yet available in a Bitcoin release.
-
https://github.com/bitcoin/bitcoin/pull/1647