hmm, this is exactly what I tried to prevent in the file api design, instead of reading the draft area you can simply get the file content or save the files somewhere. I agree we need some cleanup function for forms, but I think it should be something more general like $mform->dispose() which actually does all the necessary cleanup for all form elements and it should also clear the submitted flag in _POST.
The problem is that the draft files would get discarded after the new proposed $mform->dispose().
Why do you need this get_draft_files()? You just want to get one file, right? The correct way now is to do $mform->get_file_content($elname). As I said before the problem is that it is not suitable for large files, so you might need to actually use $mform->save_file() and store the content into temporary file.
So in short:
1/ instead of mform->delete_draft_files($elname) we need mform->dispose() imo
2/ I do not think we need get_draft_files() when the necessary mform->get_file_content() and mform->save_file() already exists (it is compatible with old style upload and new file pickers btw)
3/ +1 for the "|| $element instanceof MoodleQuickForm_filemanager"