Yeah, I use catch only just in case.
So far it's rarly needed but if something happens I want to be covered and have catch block to restart the flow after a delay.
I am not very clear what subroutine do in this scenario, it still needs to be created multiple times for each flow unless you connect all flows to a single subroutine but in my project it would be a mess since I implemented 15+ flows so it's huge.
Unless you mean I could create a single subroutine and call it from all flows which I really was looking for but I doubt it.