You can build whatever scale you want... but as has been said, ratings are already calculated so that a particular ratings difference will produce a particular expected score. Adjustment will probably just skew things, especially if the adjustment is to the degree you suggest and based solely on the rating numbers (as opposed to, say, the fact that your 800s rating was provisional, and it went up significantly in the few tournaments it took for your rating to become established.)
I think you overestimate how uncommon it is for a 2650 to beat a 2820 or so. If there is a 170 point gap in ratings, the lower person is expected to score about 27-28%. Although much of that score is from draws, the lower player does win sometimes. To find out how often, I looked at a database with 127K games in it. I filtered it for games in which a 2800+ played someone 2650 or below. There were 230 such games. Of those, 16 were won by the weaker side. That's about 7%.
Or perhaps you underestimate how hard it is for a 1500 to beat a master. I don't have a database of lower rated players vs masters, but I looked at the USCF games history of a 2309 rated FM from my state. He's played 48 games against people rated under 1500 since they started keeping track in late 1991, and lost zero. He's played 104 games against people rated 1500-1699 and lost 4. Against people rated 1700-1999, he's lost 33 of 589, or about 5.6%.
Yes, I'm mixing USCF and FIDE ratings by comparing the two, but nevertheless I would say that a 1500 beating a master is actually a bigger upset than a 2650 (which is almost enough to be in the world's top 100 list) beating a 2820.
But you didn't ask about that, so I'll set it aside now. You asked about possible formulas. One formula that might be in the spirit of what you seem to intend (heavily weighting the amount of the upset based on the opponent's rating, and affecting all areas of the rating scale) is:
A = D * 2^((R/300)-5)
"A" is the adjusted amount of the upset, "D" is the difference in the ratings, and "R" is the opponent's rating. The 2 means the adjusted upset doubles for a given amount of opponent's rating (if it was a 3 it would triple instead), and the 300 represents the amount needed to make that change. (The 5 is just for scale.) So, by this formula, for every 300 points the opponent is rated, the adjusted amount of the upset doubles.
Personally I think that's way too steep (a difference in 1500 opponent's rating points means it's adjusted by a factor of 32, and I don't think you can ever say a 10 point difference is the same as a 320 point difference) but it seems to fit what was wanted. This formula would make a 2650 beating a 2820 slightly better than a 1500 beating a 2200, and would make an 1800 beating a 1950 better than an 800 beating a 1300.