Full single tenant I have seen cause problems ... if you end up with hundreds of tenants then you also end up with hundreds of datasources, and each one has segment fragmentation issues and compaction needs, etc ... so becomes a lot more work.
So my preference is full multi-tenant if you don't have significant resource isolation issues. Yes, every query includes the filter on TenantID, but that also means every datasource can be range partitioned by tenantID first, makes for good query pruning.
My second choice would be Hybrid, meaning you only split out a tenant into its own schema if it is causing problems for the other tenants in the main schema. For this I would suggest still leave the tenantID field in, because over time you could move tenants around between the (few) schemas, ending up with cleverly balanced set of just a few multi-tenant schemas, giving you the benefit of resource isolation without most of the maintenance overhead.