Is there a good workflow for creating 'swappable' linked characters?
We managed to solve our own problem. It turns out that all we needed to do was turn the mesh object into a proxy, as well as the armature (which we were previously leaving as linked). Doing so allowed us to specify (for example) that Instance A should be parented to Armature A, and so on.

From there we duplicated the characters and their armatures ‘as linked’ within the main scene, to make multiple versions of each character, this gives lots of different characters that we can pose individually, all of which are instances of a single original character so that when we make changes it propagates to them all.

Swapping a character out once we’ve started animating is easy too, all we have to do is create a new instance of the character we want to switch to and set it to use the desired armature in the armature modifier.