Why is the second operation of a Monad called bind?
In Haskell the syntactic sugar for bind e₁ (λ x . e₂) is

do x ← e₁
   e₂


That is, the result of the computation e₁ is bound to x, after which e₂ is computed.

In ML-like languages the same thing is written as

let x = e₁ in e₂ 


which again is a form of binding a variable to a value.

As for return being a control-flow mechanism – that's precisely what it is. You are probably thinking of control mechanisms for branching, looping, raising exceptions etc. Well, return is the one that ends a computation and yields a result.