I've encountered this problem on a few PCs. The issue is that older computers address data on a disk by using a cylinder, head and sector number. This CHS addressing was left over from the earliest hard drives where it referred to the physical location of the data on the magnetic platters. When IDE was introduced, the drive itself handled the location of the data and so the PC only needed to supply a block number and the drive's electronics would figure out where on the magnetic platters it might be. This was called LBA.
The complication is that DOS still uses CHS to access the disk, and so the BIOS needs to translate that into LBA addresses to send to the IDE drive. A standard formula was created that did this conversion, and so everything that uses this formula will consistently see the same information - specifically if one system writes to C=1, H=8, S=32, then another PC reading C=1, H=8, S=32 will see the exact same sector.
The problem is that it seems some BIOSes implemented this formula incorrectly (or perhaps did so before it was standardised) so on those PCs, the LBA blocks on the disk will appear to be out of order because of the different translation result. The boot sector at LBA=0 (CHS=0,0,0) will always work, so you'll always see "Starting MS-DOS", but the next sector read tends to be wrong and the system will hang.
When you wrote to the disk, the data you wrote ended up in the wrong sectors, and this is why you see corruption when you put it back into your Windows machine.
There are only two solutions I know of for this problem:
1. Don't move the CF card to any other computer. Leave it in your DOS machine permanently. Format it and install DOS on the machine itself, using floppy disks if you have to. Although the CHS-to-LBA formula is wrong on that PC, it is consistent so the card will work fine, it just becomes incompatible with other machines and will become corrupted if you try to access it elsewhere.
2. Install the XT-IDE BIOS, e.g. in your network card's boot ROM socket. XT-IDE will take over from the system BIOS and handle the IDE drives, and it uses the correct CHS translation algorithm so moving the card between your DOS PC and another system will work just fine. Note that in this situation you might need to configure your system BIOS to have no hard drives, as you don't want it accessing the CF card. That should be handled entirely by the XT-IDE code.
There is a third option - patching your system BIOS to use the correct translation algorithm - but that is probably impractical for most people, myself included 😀