I had the same problem, and although I did not solve the problem, I found a workaround.
Instead of using:
heroku run rake db:migrate
You can use:
heroku run:detached rake db:migrate
This runs the command in the background, writing the output to the log. When it is finished you can view the log for the result.
Not ideal, but when you are on an inadequate network, it will get you out of a hole 🙂