Perhaps instead of rep as we know it, we should implement a ticket system.
1.) User posts thread asking for help
2.) Several people respond to solve problem.
3.) Feedback from person.
4.) (Hopefully) solution found, thread starter asked to give rep to those involved in the solution.
5.) Thread closed
Here is an example of what I mean, scroll down the page to see the different types of posts someone can leave on a thread.
Experts Exchange Java Question
Rep will be harder to get this way, plus closing the threads after they've been considered solved would cut down on some of the spam i've seen. In addition to stopping people from posting on threads that are very old.
Not sure how difficult this is to implement with vBulletin, but I know many other sites use it, and it works very well.
*LAST EDIT I PROMISE!:
This also helps people browsing the forums to find the answer to the question quickly.