Через WINAPI анимированные иконки делаются через постоянный вызов этого кода:
C++ (Qt)
Shell_NotifyIcon(NIM_MODIFY, &IconData);
Метод QSystemTrayIcon::setIcon() делает тоже самое. Тут нет никакого оверхеда. QTimer + setIcon() единственно верное решение, никакого рисования на hDC тут нет.