Perhaps yes, if you hook pfnSetModel(), when you detect that the model being passed is something like "*/*/player" just concatenate the map name
Code:
sprintf (model_name, "old_model_base_path/%s/player/etc.", STRING (gpGlobals->mapname));
You see the idea?