I find Pokemon to be unique enough as it is. For one, you've got the Pokemon with super unique abilities (Kecleon, Shedinja, Ditto, etc) that change their gameplay style drastically. Stats also make a big impact. Chansey and Blissey in particular can shrug off almost any special attack in the game, much better then anything else can. And sometimes signature moves make a big impact, such as on Breloom and Smeargle. Typing is also quite important. It's true that often there are Pokemon that are really similar (for example, Golem and Rhydon), but even then they have things to differentiate themselves. Rhydon has Megahorn whereas Golem doesn't, Golem has Sturdy whereas Rhydon doesn't, etc.
Assasin, you last played Pokemon in Gen III if I remember correctly. Movepools, abilities, and STAB abuse (due to types being either physical or special) were severely lacking. Come gen IV, all of that is pretty much patched up, giving Pokemon new abilities, moves, and attacking stats to viably use (if you don't know what I mean, Sharpedo was mostly forced to use special sets pre Gen IV, due to its STAB being special and having a poor physical movepool. Nowadays, it can use either of its attacking stats, or both at once).
Stats, abilities, typing, and movepool make a hell of a difference in making Pokemon unique from each other. It's true that some Pokemon are rather similar, but what can you do? Nothing really.
Through in game there are too many Pokemon that can just spam attack moves and get away with it. I'd like them to add more ways to viably use status moves in game, like Sableye and Whimsicott can do with Prankster.