Everything that follows is over the real numbers, in the $C^p$ category for $1\leq p\leq \infty$.
Fix an affine bundle of class and consider a fiber-subbundle whose fibers are convex. A partition of unity can be used to average local sections of the subbundle (which exist because it's assumed to be locally trivial) into a global section.
This proves for instance the existence of vector bundle metrics.
Exercise 5.7 of this document suggests using this same result to prove that every surjective morphism of vector bundles has a section (without vector bundle metrics). The outline is to construct an affine bundle whose sections are sections of the vector bundle surjection, and apply the above.
I don't understand how to define this affine bundle of sections/splittings. I also don't understand how I might show it is a fiber bundle: for one, I have no idea why sections/splittings should exist even locally! In the $C^p$ category for $p\geq 1$ this is a consequence of the constant rank theorem, which I consider to be heavier artillery than existence of vector bundle metrics.
Question. What is the affine bundle whose sections are splittings of a given surjective morphism of vector bundles? Why is it a fiber bundle?
This answer is probably incomplete, it only addresses the question raised in my comment.
So let $X$ be a $C^p$ manifold, let $p_0 \in X$. Let us consider a $C^p$ map $u: (p,v) \in X \times \mathbb{R}^n \longmapsto u_p(v) \in \mathbb{R}^p$ such that each $u_p$ is linear and surjective.
In particular, $u_{p_0}: \mathbb{R}^n \rightarrow \mathbb{R}^p$ is linear surjective.
Let $v_{p+1},\ldots,v_n$ be a basis of its kernel. This is a free family of $n-p$ vectors, so there are indices $1 \leq i_{p+1} < \ldots < i_n \leq n$ such that the matrix $(x_{i_j}(v_k))_{p < j,k \leq n}$ is invertible.
Let, for every $p \in X$, $v_p:\mathbb{R}^n \rightarrow \mathbb{R}^n$ be such that $v_p(y)=(u_p(y),x_{i_{p+1}}(y),\ldots,x_{i_n}(y))$, so that $(p,y) \longmapsto v_p(y)$ is $C^p$ and $v_{p_0}$ is invertible.
In particular, $\det{v_{p_0}} \neq 0$. Let $U=\{p \in X,\, \det{v_p} \neq 0$: it is a neighborhood of $p_0$ in $X$. Let $i:\mathbb{R}^p \rightarrow \mathbb{R}^n$ be such that $i(x)=(x,0,\ldots,0)$.
Then $(p,y) \in U \times \mathbb{R}^p \longmapsto v_p^{-1}(i(y))$ is a $C^p$ local section of $u$ around $p_0$.