Currently, the whole cipher class'es are (historycal) deeply designed to set the "$mode of operation" on __construct() time... for the whole life time of the object. 

However: If (re)changing the "mode of operation" ($mode) with a public method from "the outside" the current internal cipher state (internal $buffers etc..) has to be also reset/cleared (with: $changed = true)....and maybe some other internal $mode depended settings also.

So... a (public) (and non-static) method like setMode() must be deeply tested for each cipher... 

But in general it's possible but not as trivial as it seems on the first look :-)