Best possible solution is a bit of a loaded statement. Do you want to save time/effort today or long term?
As you noted running a Dynamo graph every time you want to confirm the handing is one more thing to add onto the list of things to remember to do before you print, and requires a good amount of time when you think about the number of times you print across all jobs in an office… But running that dynamo script saves a lot of time in the near term as you don’t have to change anything - just tell the computer to do the work.
Likely you want a hybrid solution - run the script before printing until you have the time to overhaul the door families.
Even that overhaul isn’t that involved time wise if they are built well (hint: nested parts and pieces). Set up instance parameters to control the visibility of your door panels (which should have the swing built into it). Delete your flip controls. Mirror the door panel geometry and tie it to the respective parameters. Use a few formulas to control options so you don’t have to check more than one box for a given option. The set up a parameter to return a text value based on which boxes are checked. The users changing the handing would simply check off left/right and inswing/outswing parameters instead of using the flip functionality. Handing populates the schedule correctly every time as a result.
You might even be able to automate a good bit of the modification process with Dynamo (creating the parameters, mirroring instances, etc).