Generally speaking, yeah you want to try to rely less on the built-in functions and more on pre-built mesh.
This said, a main speed demon is the Matrix. You can quite easily create your own Mesh Matrix using the Memblocks. If you check the DB/P Section you'll find several ode to show you roughly how to do this.
Another thing is when creating multiple objects using the 'Instance' function provides you with much more speed. This is good for objects you all want doing the same thing like Trees.
Clone object is better when you need them to be independant.
Also for some reason objects in a single object( limb of an object ) seem to be able to run much much much quicker than either close or instance objects.
Generally speaking for speed means try to keep everything static to a single mesh; personally speaking, I would hold the mesh information in an array; then build the world real/time in a memblock. Some simple routines to check what area needs to be rendered next through a basic octree or something
Collision is a little more difficult; but generally creating static collision boxes allow you to have quick collision; without the speed loss.