* original Fisher-Yates is slow; Knuth's variation is what makes it fast
* Fisher-Yates relies on "generate integer in range", which is often implemented badly (with bias, or with unnecessary slowness). See the PCG blog for the best-known solution.
Edit: Even C++ seems to have it nowadays in std::uniform_int_distribution
I wish this page showed some separate charts for fast and slow RNGs and some better slow options. If you actually care about proper shuffling and the minuscule bias you get from 2^64 % 52 then you should be using a CSPRNG, not a cheap method.
Avoiding the division can be faster, especially if you sample many numbers from the same range. But it depends on the use case.
But I agree that a CSPRNG should be the default.