Why doesn't this quine-less language contradict Kleene's recursion theorem?
The recursion theorem only applies to admissible programming languages. A programming language $P$ is admissible if it satisfies the following three properties, with respect to some reference programming language $U$:


The problem of simulating a $P$-program on an input $x$ is r.e.
There is a computable transformation $f$ which, given a $P$-program, outputs an equivalent $U$-program.
There is a computable transformation $g$ which, given a $U$-program, outputs an equivalent $P$-program.


In your case the first two properties hold, so the third must fail. You can try to implement $g$ by "compiling" a $U$-program to a $P$-program, but this compilation would fail if the resulting program attempts to print its own source code. The recursion theorem shows that there is no way around this problem.