View Modelの関係はそのままにしておき、
移動の計算は、ワーカースレッドに任せちゃうとかは?

1.Model:開始地点・目標地点など必要な情報を仕事依頼キューに積む
2.ワーカースレッド:仕事依頼キューから一つずつ取り出し計算し、結果キューに積む
             (全ての仕事が終わったら、新しく仕事が詰まれるまで待機)
3.Model:結果キューを確認し、結果が詰まれていれば取得

この辺参考になるかも
[Ruby] Queueを使ったワーカースレッド
ttp://d.hatena.ne.jp/unageanu/20071228

>>90
コルーチンは処理を細切れにして、ちょっとずつ実行していくやり方で
>「処理を進める関数/終わった時に呼ばれる関数」に分離した
ってのは結構近い考え方かも