I am close to Susanna's second option.
I have a huge number of outdoor-oriented tasks, summer daily, some are weekly, some are monthly, one is every 11 days. I tag them all with the word " hibernate ". When it gets cold, I create a task called "end hibernation", set it for next year April 1 start date. Then I turn on multiselect, filter to view only tasks with the hibernate tag, select them all and set a dependency on the end hibernation task.
Around April 1 if it's a late spring I update the start date for end hibernation. Maybe a few times. When the warm weather starts i select the end hibernation task, ask for a list of tasks dependent on this task, multiselect them all and "skip occurrences up to today" then delete the end hibernation task.
Obviously if I had one or two hibernating tasks all of this would be unnecessary.