For anyone curious, I spent a few hours troubleshooting over the weekend. I wrote a long post on my troubleshooting process that failed due to timeout, so this is the short version.
Basically, I had a VPN firewall rule set to allow syslog traffic with everything else denied from many of my branches, as they don't need to access anything and its just for administration. But I stupidly set that to enable logging, so every time a flow message was sent, that then created another firewall allow message, and so on. This for some reason only affected the ones that had been on 15.x, but once I narrowed down the VPN as the source of the issue, I just had to identify what about the VPN was the issue. Once I turned off the logging, utilization went down to less than 10% after a couple hours, Yay!
So, moral of the story is, don't enable logging on VPN firewall rules for allowing syslog traffic.