One option (although you may not like it) may be to load an instance of thispoly~ inside your external and interact with that. Although you may be opposed to this approach I have a feeling that anything else may involve undocumented bits of the API or the poly~/thispoly~ code. The other advantage of this approach is that it will work in Max 5 as any necessary changes will have been made by Cycling '74.
You can always load up thispoly~ get the instance, store the result and then free your thispoly~, all in your new routine to conserve resources....
Hah! I'd tried various things very close to that, but wasn't guessing the right incantation - "getindex". Thanks Jeremy.
Alex: Yes, I'd do that, but I'm already using the secret hacky stuff to find parentpatchers etc, so this is a simple addition to the same code. I'm aware it's gonna break, hopefully Max 5 will make this stuff easier and more reliable (get parentpatcher at loadbang, get patcher args, are we in an abstraction, etc).