I'd argue that bleeding small numbers of people randomly and/or arbitrarily is terrible for morale. Firing those who aren't performing or whose teams aren't contributing is actually good for morale. People know who is and isn't contributing and are far more understanding when the layoffs are the result of failed projects or unnecessary cost centers.