The short answer regarding hiding your database code and data is that
you can't - a sysadmin has full access to all objects in MSSQL. You can
create some objects WITH ENCRYPTION, but that isn't a real solution, as
the encryption can been hacked, so it will only prevent casual users
from seeing it, not a determined attacker (and if the server is under
someone else's control, you can't secure it effectively anyway).
The best way to protect your intellectual property is probably a legal
contract rather than a technical solution, although if it's really
important to you then you could provide your application as a remotely
hosted service, not a local installation.
As for a packaging tool, Red Gate have one in that price range. I
haven't used it myself, but I have used some of their other SQL
products, and they seem to be quite good for what they cost:
http://www.red-gate.com/sql/sql_packager.htm
Simon