We had a similar problem.
There are two ways that I can think of as a fix. One involves disabling the submit button until all validation has been passed. The other involes adding a second subimtted field. Both ways work.
We have one form that has alot of validation on that users can miss. Our problem was that if the form failed validation, the submitted field was still getting populated and disabling fields.
What we did to fix it was to have two fields for submitting (submitted1 and submitted2), submitted1 gets set upon submitting and submitted2 gets set after opening a form that has been submitted.
We solved it by adding a second bool field and using a rule on form open that checked to see if submitted1 was true, if yes, then set submitted2 to true. We then used submitted2 as the field that would disable other fields.