I'm not sure if the Carp can ever return after the river freezes, but if they do, do this:
Let the river freeze. Build floodgates on either end of the river. Connect them to a lever, fast.
Dig an exact replica of the river one floor underneath it, just don't dig up. If the water is still frozen (you may consider starting this just as you start digging out the ice from before), then go throughout the ice and dig out a few single square channels throughout it. You're going to want to build floor grates over each one. These will be drains.
Then put a single floodgate under each floor grate on the replica river underneath (there should be no water down there yet). I'm thinking these will stop water flowing down as long as the floodgates are up. Connect all of those to a new lever.
Now it's alright if the ice above melts. Just start working on a way to drain all this water that is going to flow into your replica river. Toss it on the surface, something. Just a way to get rid of THAT much water.
Now for fishing, you simply have to open the floodgates to let carp in. Raise those floodgates. Lower your hatch covering floodgates. This will drain your little bit of the river you have sealed off. Carp die off. You should have some sort of ramp for dwarves to get down. They come in and take all the Carp. Raise your hatch floodgates back up. Lower the floodgates blocking the main river. Let it flow again. Then drain your replica river.
That's my theory on Carp fishing anyway.
I'm trying to think of ways to fix the problem of people getting pulled off the bridge by fishies.
This is simple. Build floor across the top of the water. I suggest making it three spaces wide so caravans can make it across if they need to. Then build walls on either end of the "bridge".
Here's an example.

You'll notice I extend the wall onto the land. Best to be safe and I think it makes the bridge look nice.