I don't think the loader itself is the problem – unless that's not loading all examples or your data has duplicate rows.
Once your data is loaded, Prodigy will send it out in batches and it will filter out examples that are already in the dataset. A good way to check if batches were skipped is to start up the server again and see if you're presented with unannotated examples. If so, I do think the most likely explanation would be that maybe a batch was requested but not annotated and sent back (e.g. because you opened the app and closed it again or something like that). In that case, setting
"force_stream_order": true would help, because on each batch, Prodigy will check if the batch was annotated and re-send it if it hasn't.
Another explanation could be that you forgot to hit "save" at the end of the session – but normally, your browser should alert you if you tried to close the window with unsaved work.
In general, having more annotators is no problem, even if you force the stream order. You just need to give them separate named sessions then or start up separate instances for them so Prodigy knows who is who.