Wow, what a mess you got sucked into! I agree with Lugh that you already know what you are doing, you just need more time to do it in. One thing I discuss in the book that most people don't know is that if you have to join one or more stored procedures in the report, then this isn't going to be done server side. CR links stored procedures client side. So you really need to put everything into a single SP to get the most benefit. Also, if you do have to join a SP to another table or SP, then see if you can convert it to a View instead. CR will pass views to the server to be joined there and this can really speed things up. Of course, you can't use parameters with Views, but it's a good thing to keep in mind for future reference.
I cover databases and dozens of tips and tricks for SQL optimization in chapters 10 and 11 in my book
Crystal Reports Encyclopedia.