It seems to me that this "freeze" is some problem with the communication between the game client and the different servers that help playing and recording games. It seems that the game client is simply not informed of the fact that the game is over (or more probably, that the message containing this info does not reach it for unknown reasons), so it just sits there, doing nothing.
Some evidence for this:
1) The game is ended and (if ranked) recorded, according to reports.
2) I have "wait for opponent animation" checked for games against bots. When the end-of-game process works, in case the game ends after the turn of the bot, I see nothing of the bot's turn, because the animation is stopped when the game is over, which of course happens in milliseconds if a bot is acting. But when the freeze happens, I still see the last turn of the bot in normal speed.
Some evidence for this:
1) The game is ended and (if ranked) recorded, according to reports.
2) I have "wait for opponent animation" checked for games against bots. When the end-of-game process works, in case the game ends after the turn of the bot, I see nothing of the bot's turn, because the animation is stopped when the game is over, which of course happens in milliseconds if a bot is acting. But when the freeze happens, I still see the last turn of the bot in normal speed.