Periods setting only is available in the context of auto-scaling (the upper heading for this section with an example). The thing you want to achieve is not possible, you’d want to pause certain runners.
Maybe the deploy freezes coming later this year can help.
If it is just about the runners themselves - I would create a cronjob and script which stops the service in given ranges, and later starts it again. Then the runner is not available for this period of time for the GitLab server, and the server queue will be dealt with other runners. Probably you can automate the task with Ansible/Puppet too.
Re-using the Period for an “inactivity/freeze time window” for the runner also sounds like a nice idea and worth a feature request in a new issue