Как лучше всего менять цвет белой png иконки при наведении в CSS?
Лучший: использовать SVG
А если менять PNG, то спрайты.
Еще частый вариант - иконка белая, а цвет фона под ней меняем стилями. Сам фон делаем круглым, итого смотрится как цельная иконка круглой формы.
Плюсы:
1. Цвет можно корректировать с точностью до одной миллионной оттенка))
2. Картинку можно вставлять как элементом. так и стилем.
3. Не увеличивается общий размер картинок - в два раза!
4. Белая картинка как известно самая маленькая по весу.
Минусы: 
1. Не соответствие дизайну иконки, предложенной например дизайнером (гнать такого дизайнера!!)) )
Приложен скрин: