The problem is of course that every [itex]r_i[/itex] gives rise to a different N.
That is: you know that [itex](g_s(r_i))_s[/itex] is Cauchy, thus we can write:
[tex]\forall \varepsilon >0:\exists N_i: \forall s,t>N_i:~|g_s(r_i)-g_t(r_i)|<\varepsilon[/tex]
I wrote [itex]N_i[/itex] here instead of [itex]N[/itex] because we do not have only one N.
Now you must combine the [itex]N_i[/itex] into one N. This will use finiteness.
A critique of your proof: you have not shown that we can actually choose a finite set [itex]\{r_1,...,r_n\}[/itex] that satisfies the criteria. This is very important and uses something essential.
Furthermore, your proof of (c) isn't quite nice. You say "we may choose [itex]\delta>0[/itex]", but you do realize that this delta was already chosen in (b)?