Yeah, although I use the parentheses mostly because I like how it reads. And that process substitution trick is important too.
I think the redirection can come first, though (not at a computer to test):
< <( do_something ) while read . . .