Choose the questions one by one as the user progresses through the survey rather than selecting them in advance.
***** edit
Assume that the survey is completed online via a website.
User logs in and opens survey
User opens first question.
system selects a question which has not been answered the required number of times yet
User fills in answer
User moves to next question
system selects a question which has not been answered the required number of times yet....
Etc
Each question is only selected as the user requests it. Thus you can apply a shorter timeout to 'user has opened a single question and left the browser open'. Vs 'user has registed to do a survey and hasn't got back to us yet'