Issue #3601366: Partition the alias prefix list cache per site, robustly
harlor's per-site getCid() fixes the reported cold-cache contamination, but the added key-prefixing didn't fully cover mid-request site switches: because CacheCollector loads its storage only once, a switched-to site's path roots were never seeded, so its lookups returned NULL.
Replace the key-prefixing with a reload-on-switch: pin the cache id to the site whose data is in memory, and when the active site changes within a request, flush the previous site's pending writes to its own entry, then drop and reload in-memory state for the new site. This keeps writes targeting the correct entry and re-seeds path roots per site.
Add a kernel test covering both layers: a root unaliased on site A stays resolvable on site B (and A is not polluted back) across switches in one request.
Closes #3601366