If you're running MS DOS 6, you can run memmaker and let it sort out the memory for you. It does amazing things.
I never found it all that amazing -- but by the time it came out I was already far more proficient than it in a sloppy single pass than it was in a half our of reboot, reboot, and reboot some more.
To do so, I generally used MSD (microsoft system diags) memory map, combined with "mem /c /p" - to then determine which memory blocks to load things into and what order. A normal LH or devicehigh just flat loads the program in to the first available UMB, instead of the smallest available UMB into which the program will fit. As a rule of thumb, putting the smallest ones in the smallest UMB's leaves more space to load big stuff into.
Of course, tools like QEMM could take things even further, letting you set things like fileshigh and buffershigh.
One thing that sucks is that a LOT of PCMCIA drivers just don't work loaded high; some programs can be relocated, others can't.
If you could share the output of mem /c /p with all your drivers loaded 'normally' and a snap of MSD's memory map, along with your config.sys and autoexec.bat, we might be able to help you dial in things a wee bit better.
Oh, and @stone... what is "MFT" other than the NTFS equivalent of a FAT table? Did you mean MSD?