Let $ L = K(c_0, c_1, \ldots, c_n) $ be an extension of $ K $ by $ n+1 $ indeterminates, and consider the element $ g(x) = \sum c_k x^k $ in $ L[x] $. Let $ \bar{L} $ denote the splitting field of $ g $ over $ L $. It is clear that $ g $ has distinct roots in $ \bar{L} $, as otherwise no polynomial of degree $ n $ in $ K[x] $ could have distinct roots, and we can always produce a polynomial which will (why?). Now, for any root $ \alpha \in L $ of $ g $ we have that $ g(\alpha + g(\alpha)) = g(\alpha) = 0 $, so that $ (x - \alpha) | g(x + g(x)) $, and as $ g(x) $ has distinct roots this implies $ g(x + g(x)) = g(x) q(x) $ for some $ q \in L[x] $.
Now, let $ f = \sum a_k x^k \in K[x] $, and let $ \phi : L \to K $ be an evaluation map fixing $ K $ and sending $ c_k \to a_k $. Extending it to a map $ \varphi : L[x] \to K[x] $ by acting on the coefficients, we have
$$ f(x + f(x)) = \varphi( g(x + g(x)) ) = \varphi ( g(x) ) \varphi(q(x)) = f(x) q'(x) $$
for some $ q' \in K[x] $, and the proof is complete.
The essence of this proof is to first prove the given property for a generic polynomial, which has the nice property of having distinct roots; and then use this to deduce that the property must hold for any specific polynomial.