On one hand, this seems like a minefield of potential issues. If you build processes to measure "happiness" and make retain/fire decisions based on it, you're going to get a lot of fake happiness as soon as the employees figure it out. A lot.
However, in the past I've made the mistake of trying to retain angry, unhappy, or otherwise disgruntled employees too long. Some people are just irreversibly angry in life and will find a way to be upset about everything. Leaving them in the company will start to bring everyone down. If someone is clearly miserable at your company and you've made efforts to address their problems with no improvement, it's time to remove them.