From the looks of it, every headache you are getting is due to the check-in/check-out implementation. Humor me. Create another copy of the form, (make sure you edit the Data Connections and Publish it to a different Library so you don't overwrite your existing stuff, dump the check-in/out, and simply hide or disable fields based on the view or the user that is currently using the form. I'm willing to bet a pack of bubblegum it'll probably work better.
I've never used check-in/out with a workflow. To me personally, it's like using a jackhammer to put a tack in the wall to hang a calendar. ;) If I use check in/out, it's on pages or documents, not forms. Too many moving parts for forms. Just one non-expert's opinion.
Ok, got a meeting to go to. Good luck and just try it.