We can avoid the appeal to Hartogs numbers if we do an indirect proof instead. As a bonus, the transfinite recursion becomes a bit cleaner:
Assume that (a) $(P,\preceq)$ is a partially ordered set that satisfies the premises of Zorn's lemma, (b) $P$ has no maximal element, and (c) $C$ is a choice function on $P$. We then seek a contradiction.
Without loss of generality extend $C$ such that $C(\varnothing)=42$, no matter whether or not $42\in P$.
Apply Transfinite Recursion I to the class function
$$ G(X) = C(\{y\in P\mid \forall z\in \operatorname{Rng}(X)\cap P: z\prec y\}) $$
This gives a class function $F$ such that for every ordinal $\alpha$,
$$ F(\alpha) = C(\{y\in P \mid \forall \beta<\alpha : F(\beta)\in P \to F(\beta)\prec y\}) $$
Lemma. For all $\alpha$ it holds that $F(\alpha)\in P$ and $\forall \beta : F(\beta)\prec F(\alpha)$.
Proof. By transfinite induction on $\alpha$. The induction hypothesis tells us that $\{F(\beta)\mid \beta<\alpha\}$ is a chain in $P$ (note that it is a set in any case thanks to Replacement). The Zorn premises tells us that this chain has an upper bound; because there is no maximal element it even has a strict upper bound. In other words, $$\{y\in P \mid \forall \beta<\alpha : F(\beta)\in P \to F(\beta)\prec y\},$$ the set of all the strict upper bounds, is not empty, so $F(\alpha)$ is in $P$ and is greater than all the $F(\beta)$s.
The lemma tells us that $F$ is an order-preserving function from ON to $P$. Since $F$ preserves order, it is in particular injective. Therefore the formula
$$ H(x)=\alpha \iff F(\alpha)=x \lor (\alpha=117 \land \forall\beta:F(\beta)\ne x) $$
is functional, and applying Replacement on $P$ and $H$ tells us that ON is a set. The Burali-Forti paradox now furnishes our desired contradiction.
Note that we never actually needed $C(\varnothing)=42$ except to make sure that $G$ was a class function so we could use the recursion theorem on it.
The proof structure here is typical: The definition by transfinite recursion is followed immediately by a transfinite induction that extracts useful facts from the recursion formula. This two-step approach is often necessary for using the general recursion machinery because we need to define $G$ in a defensive way such that we can prove that it is makes sense and is functional without depending on its argument being produced by recursion. This defensive scaffolding -- i.e., intersecting $\operatorname{Rng}(X)$ with $P$ so $z\prec y$ makes sense, and making sure that $C(\{x\in P\mid \cdots\})$ always means something even if the condition ends up filtering everything away -- is then cleaned away by the lemma once the recursive magic has done its job and we know the input to $G$ comes from a well-behaved recursion.
As an additional note, one might argue that this is not "morally" an indirect proof. The way I prefer to think about it is that I would like to assume just (a) and (c), and then in the middle of the proof of the lemma say
... this chain has an upper bound. If that upper bound is a maximal element, then we're done; otherwise there's something larger, which is therefore a strict upper bound ...
Claiming that "we're done" with the entire Zorn's Lemma when we were in the middle of an inner induction step is not really done in polite company, though. Phrasing the entire proof as an indirect proof will allow us to follow this intuition anyway, in simple yet formally acceptable way.
The part of the proof after the lemma is then just an argument that eventually we must hit one of the "we're done" conditions, because continuing forever would have absurd consequences.
You have a little problem with $\beta$, you never defined it.
I think you meant to say in $P$ that $\forall \beta(\alpha<\beta\implies...)$ and then at $\delta<\gamma<\beta$ it is for arbitrary $\beta$.
If this is what you meant you proof is correct.
Here is a different way, which avoid the use of proper class(apart from $V$).
Let $f:\alpha\to V,g:\gamma\to V, f(x)=G(f\restriction x), g(y)=G(g\restriction y)$
Assume $\gamma\in\alpha(\gamma<\alpha)$.
Let $\delta<\gamma$ satisfy the induction requirements, for all ordinals lesser than $\delta$ we have $f,g$ equal.
From assumption we have $f\restriction \delta=g\restriction \delta$
Thus $G(f\restriction \delta)=G(g\restriction \delta)$
But this is nothing more than $f(\delta)=g(\delta)$.
This means that $\forall\delta\in\gamma(\delta<\gamma)(f(\delta)=g(\delta))$ hence $f\restriction \gamma=g$.
This is exactly the same as yours apart from the fact that my $f,g$ are fixed so it is easier to follow in my opinion.
Best Answer
The trick is to not construct $F$ itself, but to construct the function $H$ which sends $\alpha$ to $F\restriction \alpha$. That way, at successor steps you have access to the entire history of the recursion so far and not just the last step.
In detail, given $G:V\to V$, we define $G_1$, $G_2$, and $G_3$ as follows: $$G_1(x)=\emptyset$$ $$G_2(x)=x\cup\{(\operatorname{dom}(x),G(x))\}$$ $$G_3(x)=\bigcup\operatorname{ran}(x)$$ By the theorem, we then get a function $H:Ord\to V$ such that $H(0)=G_1(\emptyset)$, $H(\alpha+1)=G_2(H(\alpha))$, and $H(\alpha)=G_3(H\restriction\alpha)$ for $\alpha\neq 0$ limit. It is then easy to prove by induction that $H(\alpha)$ is a function with domain $\alpha$ for each $\alpha$, with $H(\alpha)\restriction \beta=H(\beta)$ for all $\beta<\alpha$. So, defining $F=\bigcup\operatorname{ran}(H)$, $F$ is a function on $Ord$ with $F\restriction\alpha=H(\alpha)$ for each $\alpha$. For each $\alpha$, we then have $$F(\alpha)=H(\alpha+1)(\alpha)=G_2(H(\alpha))(\alpha)=G_2(F\restriction\alpha)(\alpha).$$ Since $\operatorname{dom}(F\restriction\alpha)=\alpha$, our definition of $G_2$ tells us that $$F(\alpha)=G_2(F\restriction\alpha)(\alpha)=G(F\restriction\alpha),$$ as desired.