"Germanic languages have special words for 11 and 12, such as eleven and twelve in English, which are often misinterpreted as vestiges of a duodecimal system. However, they are considered to come from Proto-Germanic ainlif and twalif (respectively one left and two left), both of which were decimal."
In Latin seventeen is septendecim, and sixteen is sedecim (fifteen is quindecim). Language drift has shortened most French words from their Latin ancestors, and the same goes for the numbers for 10-20. I presume that the early French chose to use dix-sept when their words for septendecim and sedecim started to sound the same.
As for dix-huit and dix-neuf, the Romans counted down from twenty; duodeviginti (two-down-from-twenty) is eighteen and undeviginti (one-down-from-twenty).
So it probably made more sense to the early French to say dis-huit and dix-neuf instead.
But one interesting thing about French numbers that you have missed is that it possess a vestigial remnant of the vigesimal (base-20) number system of the Celtics, where 80 is quatre-vignts (four-twentys) to the French, and 90 is quatre-vignts-dix.
70 is sixty-ten (soixante-dix), then 71 is sixty-eleven... and so on, up to 99: four-twenty-nineteen. Indeed, 80 is 4 times 20, hence "four-twenty" (quatre-vingt, without the "s" at the end).
Interestingly enough, French-speaking Belgians use the regular forms: 70 is "septante", 80 is "octante", and 90 is "nonante".
Is that actually a vestige of a hexadec system, or just a strange quirk? Note that 2 sounds similar to 12, 3 to 13, and so on. That implies there's a relationship between those numbers, which only exists in decimal.
http://en.wikipedia.org/wiki/Duodecimal#Origin