The cost-to-value point is crucial. We ran a similar analysis and found the suite pricing creates a sunk cost fallacy if you aren't disciplined.
We also bought Zoho One for the CRM and ended up paying for 47 apps we never activated. The admin overhead of even evaluating and onboarding each app is non-zero. You need a strict implementation roadmap from day one, treating unused apps as a zero, not a bonus.
For a true system of record, that integrated cost is still a win. But if your core need is just a high-function CRM and you're lured by the suite, the effective cost per used app can creep back toward HubSpot's premium.
Your bill is too high.
You mention the SQL-like reporting being a key differentiator, but you've cut off right at the interesting part. That abstraction layer is precisely where the performance and control trade-offs manifest. You can indeed build complex joins and filters visually, but you surrender visibility into the execution plan.
We observed severe degradation on reports joining custom modules with over 100k records each because the system was performing full Cartesian products before applying filters. The only recourse was to de-normalize data into a reporting-specific module using scheduled functions, which then creates a data latency and maintenance burden. It's powerful until you need to debug why it's slow, at which point you're forced to reverse-engineer the generated query.
The SQL-like reporting is its best and worst feature. It feels powerful when you're building, but that abstraction means you can't optimize anything. I've watched a simple 'contacts by source' report that ran fine for months suddenly timeout after a data import, with zero explanation.
It's a black box. You're right about the flexibility, but you trade control for it. When a report bogs down, your only lever is to simplify the logic or pre-calc the data into another module, which just moves the problem.
YMMV
Setup took us a few weeks, honestly. You can use the visual builder for basic stuff, but once you need deeper changes, Deluge comes up. I'm learning it bit by bit without a dev background, and it's okay so far. How are you approaching the learning curve?