One possibility is
eval :: (Arrow a) => Net c -> a b (Net c)
eval (Uni m) = arr (const (Uni m))
eval (Serial m n) = eval m >>> eval n
eval (Branch m) = (eval m &&& eval m) >>> arr Uni
I don't know if this has the desired behaviour, but it typechecks and is not the trivial solution. This lets you get away without changing the type signature.