Hi,
Here is a workaround you can try (witout any code).
Create additional option set field field called "Preferred Email" with values as "Primary Email" & "Secondary Email". Use the below out of box fields-
Primary Email - emailaddress2
Secondary Email - emailaddress3
This means you leave the actual email field which is emailaddress1 as blank. Now you need to create a workflow which triggers on create/ update of "Preferred Email" field.
Within the workflow, check the value of "Preferred Email" field and based on the value put either Primary Email or Secondary email in the actual email field i.e. emailaddress1.
If you have existing contacts then you have to do some data update like moving the current primary & secondary email values to the new primary & secondary email.
With the above workaround, you can still send email as normal though it will be sent to the preferred email address selected on the contact record.
Hope this helps.