One alternative path is to still use GA, but don't expose their JS to your end users. Submit the data from your backend, via their api, and omit anything you don't want sent.
https://developers.google.com/analytics/devguides/collection...
The page listed says explicitly that it's not intended to replace data collected from gtag, Tag Manager, and Google Analytics.
"Geographic information is only available via automatic collection from gtag, Google Tag Manager, or Google Analytics for Firebase."
But otherwise, it seems useful.