I propose that (1) players who leave matches accumulate timestamped "leaver flags" on their account that will each expire with a fixed time frame. Once you accumulate enough of these flags (i.e. more than X amount before any of them reach expiry), (2) you achieve a "leaver" status (until they begin to expire one by one). The end result of achieving a "Leaver" Status, is that you (3) get placed in matches only with other players who are "leavers" like yourself.
The final message is that players who are not leavers can be assured they will have a decent (barring matchmaking woes) experience with full teams on either side. Leavers will also have an experience they are used to as they will likely be in matches where people drop willy-nilly for whatever reason.
We don't have to use punitive measures to penalize people for anything, we just separate out the regular repeat offenders from the body of non-offenders. Problem solved, nobody loses RP, nobody cries, nobody suffers if they D/C once in a while because the system is flexible and lenient, and everybody gets to play or quit as much as they like.