根本から処理の仕方変えた方がいいと思う
移動するキャラクターの周りだけ調る形に変える

キャラの移動可能距離をα
X座標の移動距離をA、Y座標の移動距離をB
キャラの座標をS、Tとすると
X座標(S-A)から(S+A) Y座標(T-B)から(T+B)
この範囲だけ移動可能か調べればいいじゃん

厳密に言うならA+B≦αの範囲だけでいいけど
ひし形の範囲調べるより正方形で調る方が処理組みやすいし

マップ全部調べるから重いんだと思うぞ