Dear Doug and Danny,
This sounds like the type of bug which deserves attention to understanding what is getting corrupted in the database tables, so that either a fix can be set up to automatically try to overcome such cases, or so an information mail can be automatically sent the course staff that such a problem was detected.
Doug - if you did not yet follow Danny's advice, could you consider making a (file level) copy of the SQL database table files in the course before doing it. Then together with someone who better understands the tables, we can try to determine what records are corrupted and how to detect such issues automatically.
Looking at the documentation in webwork2/docs/new-DB-sql and webwork2/docs/new-DB-structure and some sample course DB tables, something which affects individual users is likely to be in course_set_user and/or course_problem_user, but the main course_set and course_problem tables (and maybe some other tables) may be important to being able to figure out what is corrupted.
One difficulty to sharing such tables to allow debugging the issue will be figuring out how to scrub restricted information (user names, passwords, etc.) if tables are to be shared. It might be simple to work out a methodology of having local privileged users do the necessary investigations in SQL and just share the minimal amount of information on broken records.