There's a reason for both of those problems. The first, with the timeout window. Just because someone has started to timeout doesn't mean they've dropped. Even somebody with a perfectly good connection could find themselves timing out from time to time. In order to confirm that someone's actually dropped from the game, without a) accidently dropping anybody from the game and b ) affecting gameplay for the person who is timing out, the game needs to stop for a reasonable amount of time. It could, perhaps, be argued that 30 seconds is a long time, but that's what the timeout window's there for, and why it stops your game.
The second, with the desync, it's a problem a lot of people have with no really good answer. The problem is that when you desync, your computer the computer of somebody you're connected to think something different happened in each game. So, you could be playing a game in which you got a kill, and have 1000 more gold than in the other player's game. So, the question arises, why don't you just resync? Well, the problem there is, since it's a P2P game, you don't have some master server that can say "This is what happened." Instead, you would need to rely on somebody's version of the game, which would make it quite easy to slip a cheat in, since it would cause a desync, then everyone would resync with that person, and the cheat would stick, officially. Further, the amount of time and resources that it would take to do the resyncing would be even more crippling than the 30 seconds of timeout. The best thing to do when a desync happens is to leave, and start a new game. If you want a better explanation, Ron Lugge does a really good job of it about two-thirds of the way down on this thread:
http://forums.demigodthegame.com/351280/page/3/