Regarding the parking transaction, the output could be replaced with something like this:
<unpark time> OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
The part after OP_DROP is the classical Pay-to-PubkeyHash
This parking output will contain more money than the inputs so the minter must validate that this amount is correct one factoring the current parking rates and the time the money will stay parked.
This transaction output will be spent like a normal transaction with the only difference is that the new transaction must set the nLockTime field to be after the <unpark time> and before the current network time.
One advantage is that there is no need for one separate unpark transaction because the output becomes spendable after a specific amount of time and it is not necessary to spend it once the time passes, it only needs to appear in the UI as spendable.