I've made a couple of observations about SR gain and I'm wondering if they're general or just applicable to me.
The main one is that I get a *lot* more SR if I have any playtime on support during the game. It doesn't even have to be a lot; I've noticed almost 50% differences in gains (and similar effects on losses) just by having a few minutes of playtime on support.
For example, a balanced win playing only as Pharah net me 21 SR; a balanced win playing as Pharah plus five minutes on Ana got me 34.
My sample size of... just me is obviously pretty small, but I've tracked enough games now to know that I, at least, can pretty reliably increase an SR gain on win (or mitigate a loss) by playing support for some amount of time in the game.
It's also worth noting that most of my playtime this season is on Pharah, so it's possible that the SR system is working to make it harder to play as only one hero and rank up.