You have sprite entries in OAM. The entry contains position and so on, but also points to a tile (or multiple tiles) in VRAM that contains the shades. The OAM entry will also declare which "palette" of 16 colours to use for those tiles. The tile shades are used as a lookup in CGRAM when deciding which colours to use. Unlike backgrounds, sprites are
always always always 4bpp and therefore 16 colours.
(colour 0 is always transparent so it's really 15 colours, but...)Different OAM entries can use the same palette, so if you change one colour you might find (and have found) that it can affect other things too. It can depend on how things are structured too, We think of Diddy as one sprite, but he might actually be made up of several distinct sprites and so on.
I'd be inclined to modify the palette directly and live with the mouth and shirt being the same colours.
An alternative would be to modify the tiles themselves, so the mouth uses a different shade from the shirt, but that's a lot more work and your options are still rather limited. There would be a lot of tiles with pixels to change.
If you do want to play around with tiles.. YY-CHR is rather old but has traditionally been popular for this sort of thing. There is a more recent GIMP plugin that is very good. The sprites aren't compressed as far as I recall so that's one good thing, but you'd still have to locate them though. Most of the modern debugging emulators will at least include a tile viewer.
Although maybe there is an easier way.