The formal description I have is that this is this:
$f(n) = n^{O(n)}$ iff there exists some $h(n) = O(n)$ such that $f(n) = n^{h(n)}$.
I don't see how this can be applied to the problem to show that $3^n = 2^{O(n)}$. What function $h(n)$ can we have such that $3^n = n^{h(n)}$? Further, how is its existence shown, trial and error?
$3^n$ is $2^{O(n)}$, since $\left(2^{\log_23}\right)^n = 2^{n\cdot \log_23}$ and $n\log_23 = O(n)$.
If you are solving $$3^n = n^{h(n)},$$ just take the $n-th$ logarithm to get $$h(n) = \log_n(3^n)=n\cdot \log_n(3).$$
Using the known relation $\log_a x = \frac{\log_bx}{\log_ba}$, this gives you $$h(n)=n\log_n3 = n\frac{\log_33}{\log_3n}=\frac{n}{\log_3n}$$