you can import the private keys directly to your wallet and therefore just get the addresses associated with those keys loaded into your wallet rather than getting those bitcoins sent to an address in your wallet (thus meaning no transaction is broadcast so no fee is paid).
- snip -
If you do this, then the entity (person, business, service) that gives you the private key can take back the bitcoins any time they want until you send them somewhere in a transaction (and pay the transaction fee). Additionally, if you ever have any other bitcoins sent to that same address, that entity can steal all of those bitcoins as well.
Yes, but they'd also be able to gain access to the input and output scripts you were suggesting and could manipulate that couldn't they?
Guarenteed, the safest way to store these coins is just to sweep them directly into your wallet. But, that requires a fee and if you're just making cold storage and printing out the paper wallet by yourself then it would be fairly safe to use the mechanism of importing private keys.