Short answer: b
Long answer
The best way to think of it is this: OpenStreetMap tags are for what they are, even if the name used is different.
In the case of waterways:
- it is very common for the source of a river to be waterway=“stream” before being waterway=“river”, even though everyone calls it Rio Nome-Do-Rio throughout its course. (This is your b)
- In rivers used for agriculture, the opposite can happen: the amount of water used is so large that it changes from a waterway=river to being a waterway=stream.
- Some rivers can also be used to artificially store water. And when is a mere water reservoir as in
natural=water + water=reservoir
(see Tag:water=reservoir) , the outlet (unless someone have better idea, this is what I’ve been doing) bewaterway=stream + intermittent=yes
(reason: the water will only pass through when the reservoir gets too full. - Sometimes, some streams with the name of Steam Steam-Name have parts where it is visibly much larger, which could be a waterway=“river” (same as your b, just something names as steam instead of river).
Note: there are several other cases of water bodies, such as natural=wetland, wetland=swamp, (…), but here you might need more local knowledge than aerial images. However, even I would recommend always create some sort of line all the way, even if you have to pass over a dam or wetland.
Edit one: corrected (was objectively wrong, not mere point of view) the point 3 by Mateusz suggestion to explicitly exclude dam, and keep as use mere reservoir, which is more frequent in agriculture.