The rooms that are concrete normally would require an access point for every other room. The "every 20 meters" rule normally applies if there is just drywall between rooms and if you just want coverage. The mystery is, what is behind the wood walls; is it concrete, as well?
Type "show ap arm state" to see how well access points see each other. For each list, each access point should see a valid "neighbor" or roaming candidate at 25 SNR or more for it to be a practical roaming destination for other clients.
Based on your client number, it seems that you have a lot of density. From your diagram, it looks like you are deployed for just coverage. If you cannot add more access points, you should move the access points in the halls to rooms where people congregate.