What you've done is fine but avoid handing out lots of reactions, they slow the game down. Higher level enemies already have legendary actions to work outside of their turns, but actually interrupting someone else's turn with a reaction both complicates things and makes life unnecessarily complicated for a DM. 5e reactions are meant to be pretty limited and circumstantial things, your players have just carefully optimized to make wider use of them within the constraints of player action economy, but that does not mean that that is the best place for you to match the arms race given that you can just give an enemies multiattack as many attacks as you want or whatever, as well as throw in legendary actions, lair actions, and any bonus action you can dream up. You have enough to think about when a player says what they are doing without having to think about multiple possible special reactions an enemy might take. Also reactions are important even when they are not used as so long as someone has their reaction still they are an attack of opportunity threat, which defines what mobility is possible on the battlefield.
Bonus actions are a better, easier to handle place to beef up your monsters as they are handled on the monster's turn so you only have to think about them when the monster's turn comes around, and many monster's have no way to use a bonus action as written while virtually all can currently use reactions already for opportunity attacks and held actions when circumstances permit. Some good generic bonus actions to give them are disengage, dash, or if you want to frustrate players hide. Misty step like teleportation on a bonus action is not particularly uncommon, so nobody can complain if you give it to some other monster, particularly if they are some sort of fey or other inter-planar being. Large creatures swallowing players they have grappled is always a pretty good bonus action.
But, once again, remember that you can also just give a monster a stronger action. Players have to build towards making consistant use of bonus actions. I play with a guy who has a Berserker Barbarian War Cleric with Great Weapon master, meaning he can take a bonus action attack while doing a frenzied rage, after a kill, after a crit, and twice a day when he chooses from the War Cleric feature. So he gets his third attack as a bonus actions most turns in combat when he doesn't have to use it to rage. But a DM can just look at a creature stat block with two attack multiattack and just change it to three attack multiattack, because they are not bound by player character creation rules, and that is a lot simpler and achieves the same thing as the player needed to cobble together and keep track of three special abilities for.