purely point spectrum as compactness of orbits

Let $U$ be a unitary operator in a complex separable Hilbert space $H$. Assume that for any vector $x$ its orbit $\{x,Ux,U^2x,\dots\}$ is precompact in $X$ (i.e. closure is compact). Then there exists an orthonormal basis in $X$ consisting of eigenfunctions of $U$.

What is the easiest way to prove it, preferably without using spectral theorem in full generality?

It is enough to show that the linear space $\mathcal E$ generated by all eigenvectors of $U$ is dense in $H$. Now, it is well-known that if (and only if) $x$ is orthogonal to $\mathcal E$, then one can find a set of integers $D\subset\mathbb N$ with density $1$ such that $\langle U^nx,x\rangle\to 0$ as $n\to\infty$ along $D$. This can be proved by only using the existence of the spectral measure $\sigma_x$, i.e. the positive measure on $\mathbb T$ whose fourier coefficients are $\langle U^nx,x\rangle$; see e.g. Krengel's classical book. Using this, we have to show that $x=0$.
The set $D$ with ${\rm dens}(D)=1$ contains an infinite difference set $A-A$. By the compactness assumption, one can find an increasing sequence $(n_k)\subset A$ such that $U^{n_k}x$ tends to some $z\in H$; and we may assume that $d_k=n_{k+1}-n_k\to\infty$. Then $\langle U^{d_k}x,x\rangle=\langle U^{n_{k+1}}x,U^{n_k}x\rangle\to \Vert z\Vert^2=\Vert x\Vert^2$, and hence $x=0$ by the choice of $D$.