LeBron James is also underpaid, at least his NBA salary. That's why he chose his team based on whatever would be best for his "brand" so he could make real money.
The NBA has a cap on how much each player can make (around $50M this year). Lebron could be, say, worth $100M/yr, yet they can't be paid this. I'm guessing that there are around a dozen players in the league worth more than the max salary.
NBA has maximum contract sizes in its CBA. James (and many others) get the max contract allowed, which is why the best players choose teams for reasons other than money.