Could my simple iterative algorithm for generating random numbers be favouring digits of value 0?
Yes, your algorithm is generating "extra" $0$s because it makes $S_i$ serve as the "skip distance" to the next digit. So, if $S_i=0$ there is no skip, forcing the next digit to be $0:$ $$S_1 = A_{1,n+1}=0\quad\implies\quad N_2 = A_{1,n+1+S_1}=A_{1,n+1}=S_1=0,$$ etc. Thus, $$\begin{align} P(N_{i+1}=0)&=\underbrace{P(N_{i+1}=0\mid S_i=0)}_{1}\underbrace{P(S_i=0)}_{0.1}+\underbrace{P(N_{i+1}=0\mid S_i\ne 0)}_{0.1}\underbrace{P(S_i\ne 0)}_{0.9}=0.19.\\ \end{align}$$
(I also verified this by generating $10^8$ uniformly distributed random digits and applying your algorithm.)
Note: I think there's a typo where you wrote $N_3 = A_{1,n+S_2}$, which presumably should be $N_3 = A_{1,(n+2+S_1)+S_2};$ i.e., the position of $N_3$ is meant to be $S_2$ places after the position of $S_2,$ etc., so that $S_i$ acts as a "skip distance".
The non-uniformity in the digit-distribution is easily removed by simply adding $1$ to the present "skip distance"; i.e., use $N_2 = A_{1,n+1+(S_1+1)},\ N_3 = A_{1,(n+2+S_1)+(S_2+1)},$ etc.