your enemy_base function spawns a new entity, which it then ignores and leaks. it instead edits the self(player?) entity, which probably isn't desirable.
there's no think function set (in the given code). which implies that you won't ever set SendFlags, thus the engine will never see that it needs to resend the ent, so you get one send and then nothing (until it leaves pvs anyway). Remember, the entity will only be sent by the server if the server thinks there's a new version. So remember to set some SendFlags bit to tell the server that its changed so that it gets sent. It does not spam updates unless the mod marks that it has changed (ie: put self.SendFlags |= 1; at the bottom of your think function).
If SendEntity is set, the setmodel is optional (and thus so is the precache) in FTE. DP is more annoying than that though. Seeing as you're precaching the model in ssqc anyway, you might as well send the .modelindex and use setmodelindex in csqc to match it. this will reduce traffic a bit. you might need to use a short to send modelindexes (often depends on map), but this is usually noticably smaller than strings.
addentity/addentities should only be used between ClearScene and RenderScene. calling them elsewhere is an error (or just pointless). you should not call it within CSQC_Ent_Update (nor a child function).
I recommend you use .predraw to handle the interpolation/animation. this way the engine can do the nextent stuff for you, as well as drawmask filtering (remember, addentities calls the predraw function on every entity that matches the mask, and then calls addentity on it as appropriate).
use nextent+addentity if you really want, just be sure you do it between clearscene (which wipes+resets all scene state, forgetting all added entities) and renderscene (which renders the current scene state to the screen, including all added entities, without wiping any).
anything I missed? :s