I can distinguish between them.
A philosophy or psychology major will probably be foaming at the mouth at my extreme oversimplification, but basically it goes like this:
Everyone does everything they do for one of two reasons:
1) Gaining pleasure/happiness/etc. Positive emotions.
2) Avoiding pain/sadness/etc. Negative emotions.
A cynical person would point to #1 and say that everyone does everything for personal benefit. To these people, I say you're missing the point.
What differentiates people is what makes them happy or sad. It's the methods they use to gain those positive emotions and avoid the negative ones.
An altruistic person gains pleasure simply by helping someone. There is no further goal, as by helping someone, they've already reached it and gained their positive emotion.
On the other hand, a selfish person only gains pleasure through other means. Helping someone does not make them happy. They will only help others so far as others can help them in return.
A sociopath can be a perfectly valuable member of society. They will justify ALL their actions through believing that if they help others, they will get help in return. A sort of wacky karmic balance. This is fine and pragmatic, which is why sociopaths don't really deserve anger or indignation or hate directed at them solely for being a sociopath. You just probably don't want to be friends with them, because all they'll ever see of you is a tool. A means to an end. They only care for you as much as you have power to affect their life.
EDIT: I should note that no one is 100% altruistic and very very few people are 100% selfish. It varies in degrees for most everyone. Most people will help others just to help others AND so they can get help in return. It's not a dichotomy; not at all.
It's also why most definitions of "sociopath" and "psychopath" are bupkis, since someone who's just mostly a jerk would probably still fit those definitions. It also doesn't take sadism into account, the only trait that actually does deserve indignation.