For the curious, I've settled on firing up two DOSBOX windows, each with different configs, to do my development. One session runs at full speed with all the bells and whistles, and that's where I edit and compile. Another session is set to roughly the speed of an XT and allows me to do quick rough checks of my code. When I am confident enough to test on the real thing, I just copy it to an FTP server, then move to the real hardware and download it using mTCP's ftp client, then test.
This is not optimal, but it is very quick and convenient as both sessions share exactly the same filesystem. I compile in the "fast machine" and then immediately move to the "slow machine", run the DOSBOX internal command RESCAN to update the filesystem cache, then run my code. If I hang either "machine", I just close the window and start it back up again.
The only major drawback is that DOSBOX does not properly emulate the CTRL-BREAK sequence, nor are there any plans to do so. I tried an alternate build that claims to have a CTRL-BREAK patch, but it doesn't work on my system. I'm working around it by having my IDE save all open project files before running the compiled code, so I don't lose any work if something hangs, just time.
(Thanks to this setup, I've resumed development of my benchmark. I have chucked my grand plans to make it a full CUI-compliant Turbo Vision program, and will just be coding a very simple interface from scratch instead -- get it out there first, then worry later about learning an entire event-driven framework if it interests me.)