You are making mistakes with targets.
If you need that your pixel shader must return a float4 struct, you can't use the TEXTURE2DARRAY pattern.
You have to create a REAL texture array
ID3D10Texture2D *textures[10];
So you will create 10 RenderTargets view and 10 DepthStencil view, and you will set all 10 with OMSetRenderTargets.
You can use TEXTURE2DARRAY flag in resources creation, only if you want to use the indexed multiple rendertargets.
The rendertarget will be only 1, but there will be an index that will understand where your draw will go (the uint SV_RenderTargetArrayIndex).
You are forced to use GeometryShader in order to set primitive index, and set another index to decide what index you want to render. In HLSL, the Texture2DArray object, has got a Sample() method, that takes a float 3 as texcoord: 2 for coords, another for the index.
If you need more informations....