I suspect your model uses custom-named UV’s, and therefore a non-standard texture stage. This means when you load the model, its texture is assigned not to the default texture stage, but to a custom texture stage created just for the model, and with the UV name set to the UV name used in your model.
The upshot is that when you use the above code, which applies a texture to the default texture stage, you are (a) adding a new texture, rather than replacing the original texture, and (b) since there are no default UV’s, the new texture ends up with no UV’s.
There are two possible solutions. (1) remove the named UV’s from your model, and use the default UV’s instead. (2) find the texture stage from your model (via model.findTextureStage(’*’)) and use that to apply the replacement texture, instead of the implicit default texture stage.