If you’re getting 500 errors then you need more horsepower – More memory and a faster CPU… both!
But… you can sometimes offload some tasks from your server to other places or even scatter them around some.
The first place is to scatter tasks away from the built in psuedo-cron to an actual cron. What happens with psuedo-cron is You get a visitor… WordPress runs and looks at everything it needs to do including anything run by cron. If you install WPCrontrol and trigger cron from an actual crontab then those tasks will hopefully have finished before the visitor arrives.
Better yet is having some other server running cron for you. I use https://www.setcronjob.com/. A couple dollars a year and I have all my cron tasks running there for the whole ‘server farm’ I run here.
Another thing to look for is really intensive tasks. You mention XML RPC… I hope you’re not trying to reload all those posts via RPC everytime but you mentioned the huge number of posts and the RPC so I figured I’d ask.
You might look at the dollars involved in adding a second server vs moving everything. Sometimes two baseline VPS can handle the job and be competitive with the next level up if you consider the time (and downtime) required to move.
Usually, a good bet if the second server is in the same building and the internal network is super fast. Put your WordPress over there but leave database, email, DNS and other tasks behind. The only configuration change is usually telling wp-config to use the database at the old server instead of localhost and making sure remote MySQL is configured at the database server.
I often recommend using CloudFlare but you don’t want to bring capacity problems to CloudFlare. 500 hundred errors handed to CloudFlare just makes faster 500 errors.
But you can offload DNS to CloudFlare for a small gain (and a better DNS system to boot) and once you have the capacity issues covered CloudFlare can give you some ‘elbow room’ you didn’t have before.
Then the paid upgrades at CloudFlare can help you with future instantaneous capacity issues.
Don’t overlook the speed benefit of running PHP 7.X instead of PHP 5.6.