Normally you don't want to mess with DCT memory unless you are specifically setting something that you know the offset to, like adding new device keys, public server key, country code, antenna selection, etc..
DCT1 and DCT2 are swapped back an fourth when a write needs to change bits from a 0 to a 1, that requires erasing the sector. So we erase the non valid DCT, and copy everything up to the new data, write the new data, and then everything after the new data, and mark that DCT valid and the previous one invalid. Usually they both contain remnants of the the same data, and one is not normally completely erased. One is marked valid, and one not. If you see one completely erased that might be a good indicator that your Photon has a damaged sector that can't be written to. I typically attribute this to ESD because that's the most likely cause.
If you've been trying to DFU things to DCT, then all bets are off on the state of DCT naturally... so I don't think it would be worth looking at a flash dump of this unit. But just in case, you might as well do this, handy to restore your Photon with JTAG as well. This is a complete 1MB image.
dfu-util -d 2b04:d006 -a 0 -s 0x8000000:0x100000 -U photon_backup.bin
If you want to use JTAG, you can erase DCT1/DCT2 sector 1 and 2, not 0.
Then reset into DFU mode and put the public server key back on "particle keys server"
Then put into Listening Mode and enter your Wi-Fi credentials.
If flash memory is not corrupted, things should work normally. You could try to force different reset reasons (deep sleep vs hard reset) and see if those reasons change in your code. If not, it might be an indicator that DCT is not swapping.