I get your point. I messed with eshell for a while, then used vterm. In the end I just hard wired a swaywm key to a scratch terminal wihch toggles an alacritty instance. I can copy and paste in it fine : in short I find it easier to do “terminal shell things” in a “real terminal” but I can see why others prefer to stay inside emacs. Occasioanlly I’ll use a terminal inside emacs via projectile as its quick to open a terminal at your current project location.
I’d doubt it’s treesitter. It could be, of course. The LSP server more likely. If using Linux run htop or something and check memory usage. Edit: Mac. Find the htop equivalent.