The reason that devcon remove
isn't working is because devcon hardcodes the DIGCF_PRESENT
flag, and your old unneeded devices are not currently present. As the devcon source code is publicly available, you can compile your own version that removes the flag.
Hint: start looking in the cmdRemove
function.