Read the multitexture spec in the OpenGl 1.2.1 pdf. In short, it says:
-you can use multitexture with vertex arrays
-you can specify as much texcoord arrays as multitexture stages your hardware support (via glClientActiveTextureARB)
-you can have as much current textures as multitexture stages your hardware has (via glActiveTextureARB,GL_TEXTURE0_ARB, GL_TEXTURE1_ARB, etc )
Of course, you cant change states inside a glDrawElements call, but you can break your geometry in various glDrawElemtents calls if you’re not making too much calls.