No code changes needed.
As achow101 said above if you call getblocktemplate with the signed transaction that the OP posted it is valid. He even provided a python script to check it.
Other nodes will not relay the transaction, but once it's in your own mempool it will be part of a valid block that will be accepted.
-Dave
... and as I already pointed out above, core bitcoind won't accept the transaction to put it into the mempool without a code change.
So the only possible way I see, related to your comment, is for the pool code to add it directly into the transactions after getblocktemplate, and thus into the "submitblock"
Which means either the pool already allows putting random transactions into their blocks not already known on the network, so those pools "might" consider it and ignore the risks I stated before, or they'd have to change their work generator to allow that.
So it's still back to changing code for any pool that doesn't already allow this, and the risks I already mentioned for any pool that does allow it, or do change some code to allow it.
So in short, you won't do it using your own pool?