Instead of randomizing key fragments, why not base it on number of wins?
Keep the monthly reset, but instead of the key drops being random, base it on number of wins.
As a loose chart, it'd look something like:
1 win - first fragment
10 wins - second fragment
25 wins - third fragment
50 wins - fourth fragment
And it continues, resetting at the beginning of the next month. I'm thinking this would net around the same amount of keys per month, but would get rid of the random element and also the whole playing with friends gets you more keys. Numbers could be tweaked if necessary.