The difference is not really big.
In french : a "matelot" is always "un marin"
But "Un marin" can be something else than "un matelot", because he can also be an officer.
"Matelot" is, in the French Navy, the first rang of a "marin".
We don't make the difference that seems to appears in english, where, I thing, a "sailor" is somebody employed on a ship (civil or military), when "seamen" applies to those who are on Navy ships only (but it may be the contrary ! )