What you want to do is many times addressed as 'rootkit' and associated to malware or spy software, even if many AV, like kasperky, use that techniqe to intercept and control the whole system.
The job is not trivial, you can found some codes on underground sites (be carefull and keep strong the AV

). Anyway expect to be tagged as 'malware' from your AV.
I have just made a little research about ordinal values of kernel functions.
Result: They seem to vary between different os versions.
No you're wrong that'will break compatibility and legacy for some old, and not so old, sw. Any compatible call existing on a previous version should keep the same ordinal for standard 'kernel32.dll', 'user32.dll', etc.
Of course 'ntdll.dll' may change because you are supposed to to
never use it directly...
And an other question:
a statment like : Version 5.1.2600.5781
what is the 5781 here?
Not sure, but should be 5.1=OS=XP, 2600=Original Build, 5781=Subversion=Service pack3
Maybe you want consider a different approach hooking the system calls or injecting DLL, have a look
here... The article give also some hints on 'proxyDll' (rootkit) that, again, is very hard when you are dealing with kernel.dll...