So there ends the limits of my understanding of raw transactions. I'd be very grateful if anybody knowledgeable could look over the redacted transaction and tell me whether there's anything else I might have gotten wrong?
The following assumes that you don't want to have your private key exposed to a machine that is on the internet, if it is, let me know and I will give you modified instructions.
On a machine connected to the internet, install Bitcoin Core, start it up and then use the importaddress command to import your address. This will import just the address, not the private key, so your coins are still safe. Do this as soon as possible so that you don't have to wait for it to rescan the blockchain later.
Once the address is imported, let Bitcoin Core sync. If you don't have the disk space for the blockchain (~180 GB), then you can use pruning. There should be an option for pruning in the settings somewhere.
Once Bitcoin Core has synced, make sure that it has the balance that you expect.
Now using createrawtransaction, create a raw transaction with no inputs and the output you want. So your command will look something like this:
createrawtransaction '[]' '{"":50}'
Take the output of that and pass it into the fundrawtransaction command with the options I will specify in the example:
fundrawtransaction'{"includeWatching":"true", "subtractFeeFromOutputs":[0]}'
Take the result of the above command and pass it into signrawtransaction. Then broadcast that result with sendrawtransaction.