It’s probably better not to ignore the session parameter, as it’s used in identifying a few other configuration parameters needed further on in the code (like, the actual realm involved in the error), but that’s a different matter.
Yes, that’s indeed the cause.
Yes, the current session stays open, so that you can still work with the realm locally, but it will reconnect in an hour, that may or may not be ideal for your typical use. The delay for the case when the server sets try_again to false is fixed, so you can’t reduce it, if you look at the source code you’ll find the following comment
// Use a significantly longer delay in this case to avoid
// disturbing the server too much. It does make sense to try
// again eventually, because the server may get restarted in
// such a way the that problem goes away.
You can however force an attempt by closing the present session (i.e. deleting all references to the realm, and wait a bit for all background processes to wind down), and try to re-open it later, at an interval of your convenience, but while the session is down the realm isn’t accessible. As explained above, it’s not worth to try too often.