Sounds like you either really have a vmdk descriptor which uses invalid arguments - or that there is heartbeat corruption in the VMFS headers.
Another reason maybe that the file is locked and you cant open it because of the lock.
It maybe possible to read the vmdk by using a ESXi LiveCD or a newly installed ESXi to USB-stick.
The important part is to use a ESXi that sees the datastore for the very first time.
If you cant try that - try to read the datastore with Linux using vmfs-fuse (only helps when the flat.vmdk is not larger than 256 Gb.
If that does not work either - try to read the vmdk without the help of the VMFS headers using dd like
dd if=/dev/disks/naa.*:1 of=/vmfs/volumes/otherdatastore/unreadable-flat.vmdk bs=1M count=<size of flat.vmdk in MB> skip=<offset of vmdk relative to vmfs-partition start>
flat.vmdks actually are nothing but a very large number of 1mb files - so they usually do not get corrupt.
Only thing that can get corrupt are the pointers in the VMFS headers