Wanted to update this – I think I mostly solved the problem. Our site is still experiencing some other strange errors once a week, however all the errors I mentioned above are now fixed due to tweaking a few things with the server configuration.
Here’s how I went about fixing it, in case anyone else has this problem:
I found this Stack Overflow page was key to fixing this – I found out that my server was configured with /tmp on its own partition, and was only allocated 100M of space. The errors I listed above were caused by the /tmp folder running out of space and MySQL not having enough space to write to.
To fix this, I reconfigured MySQL to use a new temp folder I created on our main partition (as illustrated here). As soon as I did that, the errors stopped completely.
Hope this helps someone with a similar issue!