You asked about BatchNormalization layer. It is more often used in image classification models in combination with convolutional layers. It can be also used after dense layer before the activation function, which in this case is represented as a separate layer, not as an argument of the dense layer. I did not see it applied to text classification. Probably someone else could comment here. Anyway you can try it.
I think it’s best to start with a simple model without too much regularizers and then add dropouts and other methods one by one. This way you’ll see if some particular technique makes the accuracy better or worse.
Or you can define all possible combinations of what you’d like to try and use KerasTuner to search for a best combination of hyper-parameters.