You set up the redirections in the wrong order. The standard output of the second process substitution (which prefixes with `stderr:`) has its standard output prefixed by the first process substitution, because it was run afterwards.
Try this instead:
exec 2> >( while read line; do echo " stderr: $line"; done )
exec > >( while read line; do echo " stdout: $line"; done )
echo "rolo"
echo "cholo" >&2
This outputs
stderr: cholo
stdout: rolo
which is what I presume you want.