I have spoken with bigWham about this and there is supposed to already be some code in for this:
bigWham wrote:actually something like this was already done. here is some actual CC code:
define("DBDOWNBLOCK", '1200'); //time in seconds to block Begin Turns or Games before scheduled maintenance
i believe the first time this was tried it did not work entirely perfectly. however we have not had a scheduled downtime for some time, so there has not been a chance to try it again.
That doesn't address all of the issues in the OP, but it does solve the general idea I think.
Also, the problem with not allowing casual turns for an hour before is that every down time has to be over and hour that way, even if the maintenance were to only take 10-15 minutes, then we have to shut down most players for an extra hour.