Yup, that's pretty much it.
As for model instancing, perhaps it's feasible but I've given it cursory thought for now. Right now I have rotation and position info stored in a floating point texture per ship which is then bound in a texture unit before draw. Not very scalable for instanced drawing. Perhaps I could have a transformation texture per ship class which will store the data that the shader can rely on when getting per instance data. Or I can use array textures.
I'll think about it fully when this gets stable.