Can you query the cluster, specifically data on shard0000, with the
same mongos that is driving the balancing (or all mongoses)? The
second step would be to double-check that the keyfile is definitely
identical between shard0000 and the config servers.
If you verify both these things, does restarting shard0000 allow you
to migrate the data? Assuming there's no keyfile mismatch, I'd open a
server or support ticket with the mongod logs so we can look into this
more.