Need to trigger a job to run after another job completes, but only AFTER a certain time

We currently have a Dispatcher job that runs at 5:30 PM, and a Performer job that runs at 9:00 PM. If left to run to completion, the Dispatcher job may finish prior to 9:00 PM, or may run past 9:00 PM. Because of the way things are currently set, the Dispatcher job is configured to stop at 9:00 PM so that the Performer job can start.

What we would like to be able to do is to have the Dispatcher Job run at 5:30 PM and trigger the Performer Job to run when it completes. BUT, if the Dispatcher Job finishes prior to 9:00 PM, have the Performer Job not start running until after 9:00 PM.

Ideally, it would be nice to have “non-working times” rather than just non-working calendars.
That way, we could use a queue-based trigger to kick off the Performer job (Dispatcher job would drop something in the queue upon completion to start it), and set it to only run between 9:00 PM and 6:00 AM. However, since this is not currently an option, I am open to suggestions.