ну вообще чтобы понять какие данные нужны, используются gql, на странице. А построения дерева нужно, чтобы понять в какой момент получать их. Без построения увы, этого не понять. Есть квери, которые имеются на странице, но в состоянии их не будет.
2 и 3 пункт выполняются в один момент времени при построении, это не считается повторным рендером, можете даже в devtools увидеть, что они конкурентно выполняются. В любом случае SSR дорогой, да, но более оптимально никак не построить. Есть небольшой лайфхак и аполло в 3 версии уже вроде умеет с ним работать, когда networkPolicy network-only, состояние в SSR прилетает пустым.