You are describing a problem with model loading (the textures are associated with the models). Loading a second model damages the first. So I look to see how you are
loading the models, and see that the names don't look right. The names must match the JSON.
So for example, if I am adding a stick:
The item constructor sets the name to "stick", calls setUnlocalizedName("stick"), and setRegistryName("stick"). These values will be adjusted as needed.
My stick.json is then used.
If I mess up the name, then a number of things can happen, and will be reflected in the log file. Do you see JSON load exceptions? I'm just reacting to what seems excessive manipulation of the item name. Put a breakpoint before the call to setCustomModelResourceLocation and see what the location is.