What you're actually saying is "I have enough freelance / contract work and am not looking for a full time job." I said similar things when I was freelancing.
If you were actually looking for a full time position you'd do the interview. It's completely reasonable to require an unpaid interview from a candidate.
Not a multi hour one though. My first programming job interview was 6 hours and I had no idea that was even a thing. Now I inform places I'm interviewing "Hey I am taking 1.5 hours vacation/PTO whatever, so I need to be back at work after that time."
If you were actually looking for a full time position you'd do the interview. It's completely reasonable to require an unpaid interview from a candidate.