Here's how I just installed a custom boot sector loader into an image and have it work afterwards. This is a FAT12 image that is 1440 KiB long in my case, but the size of the BPB + BPB new fields is the same for FAT16. Please report whether this solves your problem.
$ dd if=bldbg12.bin of=floppy.img bs=1 count=11 conv=notrunc
11+0 records in
11+0 records out
11 bytes copied, 0.000161134 s, 68.3 kB/s
$ dd if=bldbg12.bin of=floppy.img bs=1 count=$((512 - 0x3e)) seek=$((0x3e)) skip=$((0x3e)) conv=notrunc
450+0 records in
450+0 records out
450 bytes copied, 0.00150799 s, 298 kB/s
$
A minor issue that most likely does not cause your error is that jmp main
should be jmp strict short main
.