I have been experiencing many problems since upgrading to MySQL 5.7, random lockups. First with a gazillion socket operation attempted on non-socket errors, and then one with invalid file descriptors.
At this point I've deleted and re-installed the server entirely on the assumption that something is corrupted and broken.

I've pulled the advertising portion of your reply. There is a group here for that purpose, this isn't the one.

While I'm here, I'll add you are correct with respect to MySQL, the problem with making it mainly run out of memory is that the version that is included with Ubuntu has compiled in limits that make that impossible given our load.

I found a solution in Oracle's "Community MySQL" version which has no compiled in limits allowing me to set them high enough to not exhaust resource and as you say run mainly out of memory. It's all much happier now to the point where our WordPress sites are now faster than 97% of the Internet according to Pingdom.