Your method does work, because under the transformation $(x,y,0) \mapsto (x,y,1-x-y)$, areas remain proportional. So in particular, the area of the triangle $\mathcal T(t) = \{(0,0), (t,0), (0,t)\}$ for $0 \le t \le 1$ is $t^2/2$, and under transformation, the triangle is mapped to $\mathcal T'(t) = \{(0,0,1), (t,0,1-t), (0,t,1-t)\}$ which has area $t^2 \frac{\sqrt{3}}{2}$. So, provided that you select $(x,y)$ uniformly in the triangle $\mathcal T(1)$, then $(x,y,1-x-y)$ will be uniformly chosen in $\mathcal T'(1)$.
So the only remaining issue is how to choose such $(x,y)$ uniformly. This is quite easy, since the conditional density of $Y$ given $X = x \in [0,1]$ is $$f_{Y \mid X}(y \mid x) = \frac{1}{1-x} \mathbb 1 (0 \le y \le 1-x).$$ So in order for $(X,Y)$ to be uniform on $\mathcal T(1)$, we must choose $X \in [0,1]$ inversely proportional to the length of the support of $Y \mid X$; i.e., $$f_X(x) \propto 1-x,$$ hence $$f_X(x) = 2(1-x), \quad 0 \le x \le 1.$$ This is a $\operatorname{Beta}(1,2)$ distribution, so we can write
$$X \sim \operatorname{Beta}(1,2) \\
Y \mid X \sim \operatorname{Uniform}(0, 1-X) \\
Z = 1 - X - Y.$$
The choice of $X$ is the most difficult part, but we can use the inverse transform sampling method because this particular density has an easily invertible CDF. We choose $U \sim \operatorname{Uniform}(0,1)$, then compute $X = 1 - \sqrt{1 - U}$, which will be $\operatorname{Beta}(1,2)$ distributed. Since $U$ is symmetric on $[0,1]$, we can eliminate one operation and just let $X = 1 - \sqrt{U}$.
An alternative approach is to compute $(X,Y)$ uniform on the square $[0,1]^2$, and then employ a conditional: if $X+Y > 1$, then let the selected point be $(1-X, 1-Y, X+Y-1)$, in effect rotating the point $(X,Y)$ about $(1/2, 1/2)$. So this algorithm looks like this:
$$X' \sim \operatorname{Uniform}(0,1) \\
Y' \sim \operatorname{Uniform}(0,1) \\
(X,Y,Z) = \begin{cases}(X',Y',1-X'-Y'), & X' + Y' \le 1 \\
(1-X', 1-Y', X'+Y'-1), & X' + Y' > 1. \end{cases}$$
I'm not actually sure which approach is faster, but the square root in the first method may be more computationally expensive.