To answer my own question, it turned out the problem was a change in behaviour in dh-golang (Debian helper for golang). This changed the build flags used by the default (non-overridden) Go build behaviour to use '-all' with 'trimpath', which changed the file paths embedded in the compiled code. As the plugins use an override to build (dh-golang doesn't allow for buildmode=plugin), this caused the paths for the exact same shared code to appear to be different, and the plugins wouldn't load.
I'd be interested if anyone can explain why the default Go behaviour is not to trim paths back to the root of GOPATH, given the problems this can cause with plugins. To my mind, the current hashing algorithm used to check plugins have been built with the same version as the caller of the plugin is actually wrong, as it rejects plugins built with the same code as the caller of the plugin. Using trimpath / all flags is a workaround, but no more than that.
Regards,
William