I'm not sure I understand the concern with integrity of OAuth 2.0 payloads. Sending the request over HTTPS already ensures that the request is not tampered with, and also guards against replay attacks.
You don’t know which client it actually came from and you can’t ensure integrity within the transaction flow of your app.
Say the request terminated at a LB proxy then passed through and API gateway into an MQ then goes through multiple servers you need some form of integrity checking for the request and OAUTH 2.0 doesn’t provide it.
Breaking IP might not even be necessary because programmers are dumb[2].
[1]: https://www.bleepingcomputer.com/news/security/dns-poisoning...
[2]: http://web.archive.org/web/20120317165131/http://forum.devel...