When a player writes setinfo FIELD VALUE in console, that info is set on engine client, and if the field is new, or if the value has changed, ClientInfoChanged is sent to DLL (engine calls cs function).
In ClientInfoChanged code, cs checks player model and tries to set it back to default values is model doesn't match default values.
What you could do is on client_infochanged, check for sp_model info, and don't use that value untill new round / next spawn