So, first I tried removing the attribute error from ESP8266WiFi.h, only to discover that the relevant functions had also been removed from ESP8266WiFi.cpp. d'oh.
However, after reading the source, it turns out that this little snippet works just fine:
WiFi.disconnect()
WiFi.persistent(false);
wstatus = WiFi.begin_internal(wSSID, NULL, 0, NULL);
(Where wSSID is a char* containing the SSID I'm interested in connecting to.)
It associates with the designated AP just fine.. I can communicate, and when I'm done I can just call WiFi.disconnect() again, and Particle.connect() returns it to it's original AP & config. Yay!
(It should be mentioned that this is all in SYSTEM_MODE(SEMI_AUTOMATIC); )