For context, me and my colleagues want to set up a point system for a 1v1 table tennis league table in our office which would get updated every time people play each other. We want to award points for winning matches and subtracting points for losing matches, and the amount of points added or taken away should reflect the opposing player's relative rankings. For example the leader of the league table should lose more points if they lose against the person ranked 20th than points they win if they were to win the match against this weaker opponent.
I would want a ranking system that would not allow for someone to just quickly "grind the ranking" meaning that someone should not be able to rank up quickly by just playing a lot, but at the same time if someone does not play for a long time, it should be reflected in the rankings. I know these are contradictory but a good balance would be appreciated. Point system should also consider starting points for players who just started out.
What would be the best way to implement this for a group of approximately 20? I was thinking of a similar system to chess rankings but any other ideas are appreciated.