My proposal doesn't require sending anything privately. All the necessary information is contained in the transaction itself. At the same time, the transaction looks exactly like the ordinary send-to-address transaction.
You can also send the factor encrypted with the recipient public key, embedded in the input script. This way it works exactly like your proposal.