Are you asking about using a separate subroutine to control the actual outputs? Or just conditional internal control subroutines?
The thing you get into when doing this, is handling transitions between modes. It is simpler to have a mode selected bit as a simple XIC instruction, always scan both modes subroutines, if you want manual controls not to work in the existing auto mode, then XIO auto mode and please avoid controlling real outputs this way, with multiple OTE instructions in selected subroutines.
Your OTEs will not turn off any bits when the JSR goes false, now what? As long as you cover all transitions of all modes necessary with extra logic, it will function, but is not as flexible nor simple as keeping it all scanned, and just pasting one tiny bit instruction to a number of rungs.
Every time i study a TOF, I lose three to thirty seconds wrapping my head around the fact that the DN bit is inverted from normality, so I too prefer TONs, but there are cases where a TOF is either very simple, likely in your case, or on rare occasions make a much less ugly rung, so I have nothing against the TOF.
The retentive timer is RTO, and it is an on delay type of timer instruction, the DN bit is off until the preset number of seconds has elapsed, and you must reset it with the RES instruction, since just making the rung go false causes it to pause with the present accumulated value, and when the rung goes true, it continues to accrue time in the .acc register. So to replace the TOF with RTO, you will need to examine the input conditions, invert any usage of the DN bits in the code and add a RES (reset) rung or branch. You want to make sure you are done processing the DN bit before you execute the RES. For me, I put the RES always immediately preceding the RTO instruction, keep the DN bit alive for a full scan by default as a standard programming practice.