Firstly, how do you go about stopping people from cracking/leaking your game code?
Be warned. I have a lawyer, and I'm not afraid to use it.
No kidding, that's the only thing that works. Be sure you know precisely who has access to your source code repository, which limits the risk of someone leaking code and makes tracking them down easier when it happens. Log all access if you can.
Place watermarks in preview releases so you know who is the culprit in case it is leaked. And be sure that people know these watermarks exist (though obviously don't tell them where).
Your awesome hacker friend can be really proud if he thinks he can hack your program. There's nothing spectacular about this at all, and no big threat behind it. A million people can do this, and will do it, unless your software totally sucks. There's not much one can do to prevent that (you might delay it slightly but preventing is outright impossible), even more so with the constrained resources that an indie has to offer. This is a battle that is lost before you start it, so concentrate on doing something useful with your time instead.
Though of course interfering with a program (such as cheating, or breaking copy protection) is a wholly different story than obtaining the source code. If your source code is leaked, the circle of culprits is usually very small.
Secondly, what's the best copyright method for an indie developer who's game isn't open source and people won't be able to resell it or republish it, but they can develop modifications for it?
For such a thing, you would use a plain normal proprietary license for your program and publish a public API (scripting language with bindings, well-documented asset format, build tools, etc.) with a more liberal usage license that allows the community to create a mod. It's not a question of copyright though, but one of license.