Now I am confused
I get a compile error of:
/home/ridge/.arduino15/packages/esp8266/hardware/esp8266/1.6.5-1044-g170995a/libraries/PubSubClient/PubSubClient.h:16:7: note: candidate expects 1 argument, 2 provided
no matching function for call to 'PubSubClient::PubSubClient(WiFiClient&, IPAddress&)'
I am glad you have found a solution. Multiple libraries with the same name and poor version control = insanity.
Edit: I apparently have been using an older version of the lmroy/pubsubclient package.
When I deleted my existing pubsubclient library and followed my own instructions about installing the package, it would no longer compile until I made the changes suggested by @krzychb. Mystery solved! I'll load up a few nodes with the new library version and see if there is any change in system stability.