There isn't a more elegant solution to this unfortunately. The workflow you've built using Subscription Schedules API is the most elegant way to handle this usecase.