Hi Alan,
I can't give you the full solution, but I think it is similar to the custom action "move work item to sprint" (for agile project management)
In your case you want to take a value before you actually change the value. The way I understand workflows is that they react to changes, hence after a value has been changed already.
The only way I could see this work is by creating a custom button/action that copies the current value into a new custom field and then asks you to enter the new resource that you want to allocate.