Is there any way I can move or copy file content of older version without doing checkout to that version, by passing commit hash as parameter in move command itself?
Yes, I think that ?add -all option is the right approach for this. Seems unlikely you'd have some files' hashes handy without having them checked out, but operating on all content makes sense.
That page discusses some problems implementing it for some commands, but should not pose a problem for move. It would also be possible to support get and copy, except --auto couldn't be used with --all. Even fsck could support it.
git annex copy --all --to backup