Thanks nino.
To take the triangle grouping thing a bit further, this image shows the sort of thing I'm meaning:

The triangles with the same colours are on the same plane, if that was one side of a building and the first triangle of the wall fails the backface test then they can all be rejected at once without any more tests (and without having to look up a single vertex). If however it passes then the outer wall and the centre window panels can be drawn.
The ingos that return into the windows though can be divided into other groups and if the light orange ones on the far right fail then the grey ones on the other windows must also fail and that can be repeated for the other inside sides of the windows.
One thing I've still to come up with is a way to loop through all the triangles that are on the same plane without doing the backface test for them all, just the first.
It does have fairly limited application though as it depends on the model containing triangles sitting on similar planes so I'm trying to do this with as little impact as possible for going through the list of triangles.