If you remember the last course you presented in PTA (still waiting for the certificate btw) I approached you with this very same problem.
I refer you to this topic:
Where I discussed the exact same teething problems as you are experiencing now. 5 routers were fine, but any more and it all fell apart.
I have a 10-router mesh network running very well, with between 2 and 5 WDS connections per node. I get 2 Mbps to the furthest node, and about 5-7 Mbps to the node closest to the gateway, running 802.11b/g. The mesh spans an area of about 500m x 300m, using CM9s and single 8dBi omni on each node. With lots of concrete, trees and on a slope; I have laptop coverage over 90% of the area.
The answer is to use connect-list, with either static or dynamic WDS and no earlier than 2.9.30.
2.9.30 connect-list was fixed when I presented my problem to specify a min-signal of -120 on the last no-connect rule. See the Mesh Wiki for the configuration example. This is the key
to stable connections, and aim for signals at least in the -70's.
Either STP or RSTP work fine, but obviously RSTP reacts quicker to changes in the network.
Be careful of interference, which will break the mesh easily too. Use snooper to determine if there is any significant traffic on your chosen channels.
I also found that using WPA did not work very well - if a conection was lost, it would sometimes not re-authenticate for some time.
My final configuration consists of bridged WDS interfaces using WEP 128 as a 'backbone' and Virtual AP's running PPPoE via RADIUS.
Hotspot did not seem to be reliable if run off a central interface, but you could run hotspot on every node with RADIUS authentication.