The definitions are quite similar, but what are the differences in meaning between them, exactly?
The differences are indeed very subtle. I would say cunning usually denotes uncommon intelligence; crafty usually denotes uncommon creativity; and wily usually denotes uncommon skill.
Of the three, crafty has the weakest, most lightweight connotation. Someone who is cunning might also be described as brilliant. Someone who is wily may not be particularly smart or ingenious in a conventional sense; they may have developed their skill through sheer experience, or they may have strong "street sense".
Webster's Dictionary of Synonyms says all the terms (along with sly, tricky, foxy, insidious, guileful and artful) are comparable when they mean having or showing a disposition to attain one's ends by devious or indirect means.
Cunning stresses the use of intelligence in circumventing; it often suggests sly inventiveness rather than a high-grade mentality, and a perverted sense of morality.
Crafty also implies a use of intelligence but it usually suggests a higher order of mentality than cunning.
Wily (and guileful) stress an attempt to ensnare or entrap; they usually imply treacherous astuteness or sagacity and a lack of scruples regarding the means to one's end.