OK. Reporting back, on the off chance someone comes across a similar issue, now that we've resolved it this morning.
The problem turned out to be that our login script was not handling bad data well, causing iplgnext.exe to crash multiple times which in turn was bringing down the Signup service. It appears the login process keeps a temporary store of requests, because restart the service and/or the server had no effect.
In order to stop this from happening, we needed to drop the service and remove the login script from it. Start it back up and let it run. Drop it again and re-attach the login script, and start it back up again, at which point the service was back to behaving itself.
Will now be investigating the script to see if it's possible (and easy!) to modify the script to strip any non-alphanumeric characters from input to the script prior to any processing. Will also be taking a look to see if either of the two versions above us (we're on 8.2) offer any improvement in that area.