what is the best way to approach the construction of nondeterministic PDA's?
For the "$w$ part", as you said (or implied) yourself, you don't need the stack at all. After switching to the "$0^i1^j$ part", in some state $s_2$, you can put for the $0$'s in the input alternatingly first an $a$ on the stack, then delete it with a $b$ for the second $0$, then add a $c$ for the third $0$, then start over. By adding only two of the three symbols for each stream of three zeros (as you delete $a$), you get $2/3i$ symbols in the stack which is just equal to $j$. You get a stack like this:
$kbcbc\ldots$ ($k$ being the bottom stack symbol). 

Now, you just have to delete each $b$ or $c$ with the ones coming on the input tape and accept iff you reach the bottom of the stack ($k$) when the input is complete.

The second part of the PDA might look something like this ($\lambda$ being the empty word):

$(s_2, 0, k) \rightarrow (s_2, ak)$

$(s_2, 0, a) \rightarrow (s_2, b)$

$(s_2, 0, b) \rightarrow (s_2, cb)$

$(s_2, 0, c) \rightarrow (s_2, ac)$

$(s_2, 1, c) \rightarrow (s_3, \lambda)$

$(s_3, 1, c) \rightarrow (s_3, \lambda)$

$(s_3, 1, b) \rightarrow (s_3, \lambda)$

$(s_3, \lambda, k) \rightarrow (s_e, k)$