You can limit copying of your SWEPs by moving all server-side bits into an init.lua. The clientside code (usually in cl_init.lua or shared.lua) is of course sent to every player, but your server-side code doesn't have to be. People tend to put everything in shared.lua and use "if SERVER" and such to make it work, but this means players only need to pull shared.lua from their cache and they have everything. If they can only get the clientside bits, they can't rip it without recoding half of it.
Couldn't have said it better. Also even if the serverside code isn't there that doesn't mean I can simply code it for myself. As many of items coded are simple