You could use an "add choice" in the Change Data Value flow step. This would say If Lead Source - First Touch is not empty, then change data value Lead Source - Last Touch. You'd also do this for the Lead Source Details - Last Touch.
Thanks for the response Dory! Here's the current setup with Unbounce, which we're using for a few of our landing pages with lead source being tracked by UTM/cookies.
UTM tracked URL -> Unbounce -> Conversion -> Lead info and UTM info recorded in Unbounce -> Lead info & Lead Source (recorded via UTM) pushed to Marketo.
Would your recommendation work in the above scenario? Am I going about this incorrectly?
What you're describing is not explicitly possible. You cannot both block updates at the database (Field Management) level and read the rejected data from the field (since it will not populate the field!).
What you can do is post to a separate "traffic cop" field (whose updates are not blocked) and check the values of other fields before populating them.
(You are posting to the correct area. Products ftw!)