We will wait for Tim comment, but if I correctly analyse your problem, I don't think your tests permit any conclusions. here is why:
The "error_question_answers_missing_in_db" error message can only be triggered when the question in backup is not created during restore because it already exists. This message appears if when trying to "map" the question existing in backup with the question existing in database Moodle can't find one or more of this questions's answers.
This is what makes this issue difficult to reproduce or to analyse: if you send me your backup, it will not permit us to understand the problem because it will restore with no problem in my Moodle because as the question doesn't exist it will be created during restore and the code that can lead to this message will not be executed so there is no chance this message is displayed.
What we need to understand is why when moodle is comparing the answers of the problematic question(s) it fails to find a match in your database. This part of the code try to find an answer in database with the same questionid and with the same content for the "answer" field.
I am very interested by the fact that several people report that maybe these questions were imported from Examview because as you may know I changed a lot of code in the import formats last year including the ones used to import Examview files.
Maybe I am not cleaning enough the text of answers in my code so the content of answers in database contains characters that should not be here. Later when these question are backuped these illegal characters are removed and later when the question is restored the comparison between "cleaned" answers in backup and "uncleaned" answers in database fails ? This is just an idea but maybe this is the solution to the problem.
What makes me think that is the fact that a similar bug related with answers containing carriage return was already fixed in MDL-30018.
I must also add that I don't think Rob's solution is good : muting the fire alarm when it gives too much false alarms can be dangerous. We must understand why this exception is thrown.