consumeBuildingPrefetch
Returns and atomically removes the prefetched result for buildingId. Returns null on cache miss — callers must fall back to a live DB read. This is the engine-side hot path entry; it's deliberately one-shot so the cache shrinks as the engine drains it (bounded memory).