In this paper, we propose a traffic demand management scheme, named CARMA, to address the morning commute congestion with heterogeneous travelers. We introduce karma as a non-tradable mobility credit used by the commuters to bid for access to a fast lane that is kept in free-flow. Commuters who did not bid enough to enter the fast lane instead use a slow lane in which they might experience congestion. At the end of each day, the karma spent by those entering the fast lane is evenly redistributed to all commuters, and this process repeats indefinitely. A core novelty of our approach is that we generalize the notion of Value of Time (VOT) by allowing it to vary dynamically each day, e.g., as a function of the trip purpose, rather than being a static characteristic of each individual. This allows us to asses the efficiency and fairness of the system over the long-term instead of based on a single day. We formalize the recurrent interactions among self-interested commuters as a dynamic population game, and prove the existence of a Stationary Nash Equilibrium (SNE). We then investigate the performance of CARMA through three numerical case studies with different assumptions on the heterogeneity in VOT. Our results demonstrate that CARMA closely approaches the efficiency of classical optimal congestion pricing, while preventing individuals with a higher (monetary) VOT from consistently taking advantage of the fast lane, thereby providing a fair and efficient solution to the bottleneck congestion.