Seems to me like you are creating your own kind of framework based upon Cake… this is far beyond typical MVC.
Yes, Cells are created, loaded and rendered directly in the view by default, so each cell gets rendered individually. You’d have to create your own kind of caching system to not re-load the same data in the same request if you render the same shortcode multiple times.
BUT as the docs say if you add the CellTrait to your controller all you need to do is call
$rendered = $this->cell('ProjectStatistic', [$dataForCell])->render();
instead of doing
<?= $this->cell('ProjectStatistic') ?>
cells can be cached as well, but only for the given request, not across requests
If its dynamic data which can be rendered on any page I’d personally go for an AJAX/Client side based logic, but I of course don’t know all about your usecase - besides the fact that you already tried that.