The contact fields that will be mapped to a template variable will be static/same/fixed always. So I think they should be permanently mapped at time of creation only or maybe an option to map/demap later.
Currently choosing each field individually for each variable is almost the same as typing the data from the fields.
And i observed that blank fields are not shown/allowed to map; for this you can also throw an error message for fixed mapping of empty/blank contact fields