After spending way too much time on these shenanigans, I've come to the conclusion that it's much quicker, easier, and more successful to install Windows 3.1 on MS-DOS 6.22 than it is to install it on FreeDOS 1.4.
Even after trying every fix I could find (short of learning how to install a dev system specifically for rebuilding a DOS kernel from source, toggling a single option I don't understand), Windows refuses to start because it can't find a file that neither it nor FreeDOS installed.
I like FreeDOS, and it works well for some vintage and modern programs I like, but it just simply isn't compatible enough with vintage Windows.