How to deal with this array correctly?
You don't want an array of strings containing the (badly formatted) names of variables. Instead you want an array of 32-bit integers containing the values held within those variables.

const uint32_t colors[] = {
    CRGB::White, 
    CRGB::WhiteSmoke, 
    CRGB::CadetBlue, 
    CRGB::SteelBlue, 
    CRGB::Teal, 
    CRGB::SlateGray, 
    CRGB::MediumPurple, 
    CRGB::Purple, 
    CRGB::PapayaWhip, 
    CRGB::LightPink, 
    CRGB::Crimson
};


Since colours are just numbers, in the (hexadecimal) form of 0xRRGGBB you just store them as 32-bit unsigned integers.  The names you have there are just such (constant) variables used for easy reference (CRGB::White is 0xFFFFFF).