How to make sure that the features learned by a neural network are not correlated?
Dropout (2014 paper) is my first thought.
By effectively removing N% of your neurons on each pass through the data, you make it harder for any two neurons to work together. When its buddy disappears it is forced to find another way to learn the patterns in the data. On the next epoch, when its old buddy comes back, it has a new perspective on life, its horizons have been broadened, and it is less likely to re-enter that co-dependent relationship.
The second thought was L2 regularization: it forces the network to not rely on just one neuron in a layer, but to get them all involved.
If you are not convinced, just try it. Try to create a network where, say, only two of the neurons in the final layer carry all the signal. Then re-train it using a dropout of 50%, or a higher L2 value. It may be a weaker model overall, but it is going to be really hard to not have all the neurons share the load.  (Also try it with and without the bias, as mentioned below.)

different and independent activation functions for each neuron within the layer.
Are there such networks?

I'd be interested to hear if you find anything. I suppose you could argue that the bias is creating a unique activation function on each neuron, though I think you are suggesting something like ReLU in some neurons and tanh in others? (A bit tricky to implement efficiently?)
A little bit removed from your question, but the different heads in multi-head attention (in the Transformer model) are another example of getting multiple different &quot;activation functions&quot; into a layer.