A small variation to consider is that instead of two sets of location fields, you could use a related table where each record is a different location for the same user.
It's hard to answer your question without knowing more about what you currently have in place. Since you have this data already in fields in your database, you don't really need to copy the information into variables. You can simply refer to the fields.
There are a number of ways that you can use to select from more than one location for the same user. A script can detect that there are multiple locations and pop up a custom dialog or modal window asking the user to select a location. The script can then use the user's choice to set a field or variable to a value that then controls which location appears in your layout for use as a merge field. (A calculation field can return the address for location 1 or location 2 depending on what value is set in a variable or field by your script.You'd use that field as your merge field on the layout.)