First of all you are writing code in a script language. It means it is not compiled to binary form but it is compiled on the fly and executed. Just for that reason you need to provide a source code. If you really want to hide the code you can use encoders like ZendGuard or ioncube they will encrypt the code and require a php module to be installed in order to decipher and execute them.
That being said I personally try to stay away from such modules in magento not because I want to steal the code but because often it happens that the client want to tweak the functionality or extend it. With encrypted code it is hard or sometimes impossible.
If you do not want to pay for any of the two or similar modules you can encrypt the code yourself. The most straightforward way is to use some crypt function or otherwise break the code into something that can be properly evaluated by eval
function. I encountered breaking the code into chain of chr(12).chr(14)...
. Such chain can be further obfuscated with base64 or bcrypt. In the end your file will looke like eval(base64_decode($strangeString));
As to choosing license I misunderstand your question. I believe none of the open source license by default restrict redistribution. So you need to create a custom one and attach it to the module. You can easily copy one of the proposed and remove distribution clause.