Thanks Aragon, but your solution does not work. OpenLayers API specified that the control ModifyFeature have to be initialised with ONE layer, not an array. It gives an exception when an array is used (OpenLayers version 2.12).
OpenLayers.Control.ModifyFeature
Create a new modify feature control.
Parameters
layer {OpenLayers.Layer.Vector} Layer that contains features that will be modified.
options {Object} Optional object whose properties will be set on the control.
Same thing for the DragFeature:
OpenLayers.Control.DragFeature
Create a new control to drag features.
Parameters
layer {OpenLayers.Layer.Vector} The layer containing features to be dragged.
options {Object} Optional object whose properties will be set on the control.
The only Control that allows using multiple layers is the SelectFeature.
OpenLayers.Control.SelectFeature
Create a new control for selecting features.
Parameters
layers {OpenLayers.Layer.Vector}, or an array of vector layers. The layer(s) this control will select features from.
options {Object}
I think that there is no way to drag features from multiple layers using the current version of OpenLayers (2.12).
[Edit] There is a way, see my second answer.