I disagree with the post above in emphasis rather than substance, and I think the difference matters for how you build this, so I'll lay out how I'd actually do thirty.
What you are defending against
Not a live algorithm that clusters by IP. That is the 2014 version of the threat and it's mostly gone. What you're defending against is a human, or a human-assisted review, that starts from one flagged site and follows whatever the cheapest link between properties is. Every shared attribute you leave in place is one hop on that walk. The question is not "does a shared IP get me penalised", it's "if somebody starts at site 12, how many of the other 29 do they reach before it stops being worth their time".
That reframing changes what you spend money on, because a hop is a hop whether it's an IP or a Google Analytics property ID.
The hop list, roughly in order of how cheap it is to follow
- Identical analytics or ad IDs. Free to search, instant, complete. Do not do this.
- WHOIS, where it isn't privacy-protected, and the historical records where it once wasn't.
- Registrar plus creation and expiry dates. Thirty domains created within a week and expiring on the same day is a signature.
- Nameservers. Custom NS on your own domain across all thirty is the same mistake as one IP, made at a layer people forget to check.
- The reverse IP. Real, cheap to look up, but it's fourth or fifth on the list, not first.
- Template and content fingerprint. Same theme, same plugin set, same about page structure, same three stock photos.
- Outbound link graph. Thirty sites, two destinations, no other outbound links of consequence.
What I'd build for thirty
Five providers, six sites each. Not thirty providers — you were right that thirty control panels is unmanageable and an unmanaged network dies of neglect long before it dies of detection. Five is enough that no single lookup returns the set, and few enough that you can hold it in your head.
Registrars: three minimum, and stagger renewals across the calendar. This is the cheapest win available to you and you've already broken it, so unwind that first.
DNS: use each provider's own nameservers rather than one custom set. It's less tidy and that is the point.
One caveat I'll flag because I have not tested it properly: I don't know how much the CDN layer collapses all of this. If thirty sites sit behind one account at one CDN, whether that reintroduces the association in any way that matters is not something I can demonstrate either way. I keep them on separate free accounts on the assumption that it does, which may be superstition.
Summary: five hosts, three registrars, staggered renewals, no shared IDs, and spend the time you saved on making the outbound link graph look like an accident.