Initially I was thinking that that was the best solution, but at the end, it's still a guessing game, since you don't know which mon would tera and when will it do it.
Preview also only half helps since, while several mons can run a couple viable tera type, some are pretty obvious. Like, yeah, thanks for telling me Dragonite has tera normal or Kingambit has tera flying.
Personally, I think that maybe limiting tera to only one mon would be better. You know which one it is, but not the tera type. This leaves room for the opponent to still have some liberties and the element of surprise, without forcing you to play 4-D chess, trying to guess if they will tera Garg or Volc for example, especially since most of the time some pokemon ran like one actually viable tera type, would you can still choose to use a wacky one to take advantage of the expected type.
Idk, that's just my opinion though, and I express them to also read more arguments on the matter. I really like tera as a mechanic, but it can sometimes really just be a pain and even feel unfair.
There's no way to balance or restrict tera in a meaningful way.
Preview will make tera 5% less broken, and the meta 10% more wonky.
(putting tera fairy on Glimm and not having d-gleam lmao)
(I also think preview will cause a small % rise in pure 50/50's, but nothing wild)
1 mon tera just causes more issues than it could ever solve and invalidates defensive tera.
If tera was a held item, or reverted back when mon is switched, or something wildly drastic like that then it would be more balanced.
The way it works now, you can't fix that.
Tera will most likely stay, and we'll get preview I assume, but that's basically the only "restriction" that solves more problems than it causes, technically.
It won't do much to address your last issue.
But as I said recently, meta is in a decent spot.
It was jarring to get used to stealing momentum back after it got stolen from you, after years of, y'know, earning it lol- and it still feels uncomp af and unfair- but it's a playable meta- just far from as competitive and balanced as it could be.
Once home drops, we will lose several mons that otherwise would be fine w/o tera, but the playerbase seems fine with that.
Essentially, don't try to fix tera, just do your best to mitigate the unfairness.
Should your specs Val be able to kill a Hydre? Yes. Did it steal momentum by tera Steel and killing you? Yes. But can you steal it back now that it's Steel? Hopefully.
Once that goofy ass, comically broken exchange happens, you're free to play pokemon again.
It kinda all balances out in a weird way.
Building and playing, I'm usually working on a lure of some kind, like I wanted you to tera Hydre and take my Val, now u lose to King sucker.
Reminds me of companies I've worked with.
There are some managers/employees you work with, and some you work around.
Tera is something you have to work around if you want it to feel less unfair.