So you want to do something, but don't want to use the tools that IBM provide you to accomplish it.....?
We have always found the ¬RUN keyword used with an IF statement to be a suitable way of coping with earlier steps not running due to a job restart.
Or if you have TWS you can use the supplied step restart function to take care of it for you. The JES control blocks will be manipulated for a restarted job so that return codes from the previous failed job are simulated when the job is rerun, thus allowing subsequent IF statements to be interpreted correctly. I daresay other schedulers have similar functionality.
If you're not allowed to use IF for some entirely spurious reason (the only thing difficult about re-run situations is if the JCL is coded badly to not expect re-runs) then have your scheduler control everything. If your site is suffering from the illusion that a 253-step JOB is the thing to do, then have each step as a separate JOB.