Ok, I played with the storefront/model/catalog/category.php model, specifically getCategories(). I left the params as coded ($parent_id = 0, $limit=0) but changed the query to make sure that it would not grab the entire categories table (834 rows) but rather just 24 rows:
$parent_id = 0
and any that has
$parent_id IN (the_list_of_parents)
Store loads much quicker, and the `ul.categorymenu` displays and works correctly. That's all that's needed on the homepage. However, when traversing to `rt=product/category&path=4_662` the `div.contentpanel` loads 24 sub-categories. I'm pretty sure the 24 number is coincidently tied to my code change.
(I just hard-coded my parent_id=0 category_id's just to confirm working, fyi)
SELECT *
FROM categories c
LEFT JOIN category_descriptions cd ON (c.category_id = cd.category_id AND cd.language_id = '1')
LEFT JOIN categories_to_stores c2s ON (c.category_id = c2s.category_id)
WHERE c2s.store_id = '0' AND c.status = '1' AND
( c.category_id IN (1,3,4,6,7,8,10,13) OR c.parent_id IN (1,3,4,6,7,8,10,13) )
ORDER BY c.sort_order, LCASE(cd.name)
So, this helps, but is not my answer. More to come later.