Not really an answer since this not moving thing really looks like a bug, but here we go.
I would say the problem is package loss.
See, all the information of what is happening in the game goes to your computer through internet (that is obvious), and if you timed out I figure you are having some internet problems (also obvious). Maybe dota isn't getting all the information it needs from the server or something like that. For me, when I reconnect, little things bug... like my own creeps appearing as they're enemy's creeps and I only realize they're mine because my hero won't attack them.
I would close dota, make sure my connection is ok through some tool like iTraffic Monitor (I've been using it for a long time and the internet graphics are pretty useful to tell if your connection is fully back on or just spiking), then I would open dota again and see if the problem is gone.
Sadly, I think there is nothing valve can do about it right now. Your internet is not getting all the data the server is sending to you. The game tries to run with the information it has but it doesn't know what to do if it doesn't have enough information.
To be more graphic, let's say the HP of a hero is lost. It's just some bytes but if they get lost how the game would behave? I don't know. The game will try to guess the HP? The hero will have full HP? My solution as a programmer would be don't let the player in if the game is not getting ALL the information it needs. But I guess that's not valve's approach since some information can be lost without interfering in the player's experience.
That's a tough one.