A couple ideas:
I think you could divide this analysis into two separate analyses. One for defensive stats and one for offensive stats. You are currently machine learning a combination of how well a team performs offensively and defensively at the same time, even though those things have little to do with each other (theoretically).
Since there aren’t clear boundaries between clusters, it may be better to use a clustering algorithm that assign probabilities that a player belongs to a position rather than assign them a hard position. For example, Chris Paul And Jeff Teague are very different by your method, but they are both assigned to the same position.
Also, what do you think is going on with Boris Diaw?