We used Netscore to manage in the past. Their solution involved a dedicated module and scripting automatic journal entries to deferred revenue when points were generated/consumed. It worked because it was automatic, but I imagine manually tending that wouldn't be workable