Moving from Horizontal to Vertical is not as easy as just changing Left and Right to Bottom and Top.
Paint.NET currently passes scanlines into the Render loop (and as Rick has said, this might not always be the case, so your Horizontal code could be wrong in the future). Since scanlines are going into your render loop, rect.Bottom - rect.Top [height] is going to be equal to 1. So far starters, use selection instead of rect when calculating the width and height of the total selection.
This does NOT solve how to draw vertically, since each pass into the render function will generate a new random number, but this should help you understand where you are going wrong and get back on track.