If we consider the functional equation: $f:\mathbb{Q}^+\to\mathbb{R}$ such that $$ f(xy)=f(x)f(y) $$ for all $x,y\in\mathbb{Q}^+$ I think, I have constructed a solution which is not of the form $x\mapsto x^a$. Namely, if we consider $V=\mathbb{R}$ as $\mathbb{Q}$-vector space, we can find a base $B$ of $V$ such that $\log(2),\log(3)\in B$. If we set $f(x)=\exp(\lambda(\log(2),\log(x)))$ where $\lambda(b,x)$ for $b\in B$ and $x\in \mathbb{R}$ denotes the coefficient of $b$ in the base $B$ representation of $x$. First of all, is this construction correct?
Now, what if we impose the codomain to be $\mathbb{Q}^+$, i.e. $f:\mathbb{Q}^+\to\mathbb{Q}^+$? Can we still find non-ordinary solutions? Intuitively, I would say yes, but the above construction fails in this case. How to proceed?
Let $f \ne 0$ satisfy the given functional equation. Then there exist $x$ with $f(x) \ne 0$, and since $f(x \cdot 1) = f(x) f(1)$ we get $f(1) = 1$.
Next, taking $y = \frac 1 x$ we get $1 = f(1) = f(x \cdot \frac 1 x) = f(x) f(\frac 1 x)$, whence it follows that $f(\frac 1 x) = \frac 1 {f(x)}$.
This shows that if $\frac m n$ is a fraction written in lowest terms, with $m,n \in \Bbb N$, then $f (\frac m n) = f(m) f( \frac 1 n ) = \frac {f(m)} {f(n)}$, therefore it is enough to give $f$ on $\Bbb N$.
Even more, since every $n \in \Bbb N$ can uniquely be written as $p_1 ^{a_1} \dots p_{k_n} ^{a_{k_n}}$ with all the $p_i$ primes, we have that $f(n) = f(p_1 ^{a_1}) \dots f(p_{k_n} ^{a_{k_n}}) = f(p_1) ^{a_1} \dots f(p_{k_n}) ^{a_{k_n}}$. This means that, if you give the action of $f$ on the prime numbers, the fact of being multiplicative allows you to extend it to $\Bbb Q ^+$ (the values of $f$ on primes will be the building blocks of $f$).
Finally, and this is the crux of the matter, you are free to define $f$ on the prime numbers in any way you like, there is no constraint here. In particular, you may very well choose $f(p) = p^p$ for every prime $p$, which clearly is not of the form $p^a$ for some fixed $a$.
To conclude: you are right, not all $f$ like in your question need be of the form $x^a$.
Concerning your own example, it looks to be a complicated way of saying the following: if $x = \frac m n$, with $\frac m n$ in lowest terms, and if $m = 2^a m'$ and $n = 2^b n'$ with $2 \nmid m'$ and $2 \nmid n'$, then you define $f(x) = 2^{a-b}$. You are right, this is yet another multiplicative function as desired (and it is equal to $\frac 1 {\| x \| _2}$, where $\| x \| _2$ is the "$2$-adic norm" of $x$).