Basicly, the limit for vertices, as well as for triangles may be a 16 bit number. since some cards used signed 16 bit values, this was limited to -32767 to 32768 (or so). I don't know why your max is 33000, I wouldn't rely on it.
Even 32768 isn't save, I'd use something like 30000.
A fas as I know the number of surfaces on a mesh isn't limited in theory, but IRL it may use the same 16 bits, or even less. It should however be possible to use multiple surfaces with a lot of tris all in all.
Once I had exported meshes of a tool that used to ignore these numbers and exported unlimited polycounts. I wrote a surface splitter utility that was capable of reorganizeing the surfaces using a max of 30000 tris as well as vertices for each surface. It worked.
Even 32768 isn't save, I'd use something like 30000.
A fas as I know the number of surfaces on a mesh isn't limited in theory, but IRL it may use the same 16 bits, or even less. It should however be possible to use multiple surfaces with a lot of tris all in all.
Once I had exported meshes of a tool that used to ignore these numbers and exported unlimited polycounts. I wrote a surface splitter utility that was capable of reorganizeing the surfaces using a max of 30000 tris as well as vertices for each surface. It worked.