One solution could be to use several points for each label (color name). For instance, we could use a limited set of color names (red, green, blue, etc) but have a lot of points associated to this labels. For example, different points like #07250b (that is, in my opinion, missclassified) and #51f665 could share a same label: green. The main problem is that I'm not sure It is possible to find such a dataset on the internet. Maybe we can build one from sites like http://cloford.com/resources/colours/500col.htm, removing the numbers from each color name.
With several points for each label, It will give us the possibility of using a 3NN, for example, instead of a 1NN classifier. It should impact also on the results, but I'm not sure it will really improve the results.
I also noticed the problem with darker colors. I introduced several ideas in the article: using a different metric or a different colorspace. This could help, but if we really have a lower points density in the darker zones, the good solution might be to find even more colors on the internet.
Your proposed solution looks to be a mix of changing the color space and the metric. Maybe we could use HSL/HSV with a metric that reduces the weight of some component. It could therefore consider less the fact that the three components are high/low, but focus on the "real" color side.
As explained in the article, you need to choose the dataset that fits your needs. And you're right, a smaller dataset with more common names will be more useful in some cases.
With several points for each label, It will give us the possibility of using a 3NN, for example, instead of a 1NN classifier. It should impact also on the results, but I'm not sure it will really improve the results.