Does SoSci Survey provide a feature to generate an anonymous code that can be stored both with the survey responses and alongside the email address, enabling us to match the two later?
SoSci Survey provides such a feature with the Opt-In question type. It will store a person ID in the dataset and with the address record, unless you set the "anonymous" privacy mode.
However, as soons as you store a code that allows you to match the answers and the email addresses, you have person-related data, according to the GDPR. Pseudonymous data is often regarded as personal data.
A different option would be to store a (random) code only with the data and ask the respondents to write down that code. That will, however, only work if you so the matching after doing the qualitative interviews.
If you need the data to select the email adresses, you will have to live with personal dat. That means meeting all the GDPR rules.
How can we ensure that email addresses are stored securely and separately from the survey data within the platform?
The separate collection of contact data allowes for that - however it ensures true separation, i.e., you won't be able to match.
balancing data protection with the need for matching
There a broad variety of balancing, as shown above. The best practive depends on a lot of details. The main point however is: As soon as matching is possible, you'll have to go the long way, anyway (GDPR, DPA, pro server, information obligations, documentation, ...).