As fysiks said, if you have the value only for admins, then checking for admin access is unnecessary. About your question, there's really not much need for caching the value since it is probably set/unset only once, right?
The only possible way to optimize that (and this will still depend on the implementation of the Pawn compiler, therefore this is really low level) is to takethe == 1 off the comparison to simply if(norecoil_active[id]).
You can also make your zero-value Float vector static or global, avoiding creating it every single time PreThink is called.