My recommendation would be this… Implement the Rain Delay feature in terms of days not hours. Commercial controllers I am familiar with are programmed in this manner. This makes it easier to push back any programming rather than skipping it.
For example, setting a rain delay of 1 day would delay everything scheduled during the current day, a 2 day rain delay also delays watering scheduled for tomorrow. Then, simply add the number of days delayed to the “Starting in X Days” parameter for each program. So if “Program 1” was set to run in 3 days, it would, under a 2 day Rain Delay, now be scheduled to run in 5 days.
In the case of a delay caused by rainfall, would you ever really be delaying watering for just a few hours? If it rains, I know I always want to delay (not skip) my watering schedule for at least a day or two. Thus, I believe the Rain Delay should be a true delay, and in days.
And if you would like to retain the current approach of skipping programming by a number of hours, you could potentially retain it as a “Shutdown Period” or similar. I think that better reflects the function.