This is going to require some changes to the way the scheduler works — the issue is that master zones are turned on dynamically on the fly, depending on whether any associated zone is on or not. It’s done this way to guarantee that at any time an associated zone is on, the master is on. For this reason, the master zone is not scheduled independently, but rather is scheduled dynamically on the fly. Since in general we can’t predict when a zone is going to be turned on (for example, a user can manually open a zone at any time), the master currently can only turn on simultaneously or after a zone is on, but not before.
I guess one solution to this is to delay the zone start time to achieve the same effect, For example, if someone wants zone 3 to turn on now and master to turn on 20 seconds before the zone, since we cannot go to the past to turn on master 20 seconds earlier, we can do it the other way around: turn on master now and then after 20 seconds turn on zone 3. Essentially this is postponing zone 3 by the desired delay time.