MSBuild has New Methods for Manipulating Items and Properties. Using these methods, you can map your resources using an ItemGroup (instead of CreateItem), then create another ItemGroup applying MSBuild Transforms with MSBuild Well-known Item Metadata. There are many item metadata options you could use to achieve the desired effect. There's a clear example of the syntax on this answer.
I wrote a little script as an example. It creates an ItemGroup with *.exe files and transforms them. Tested with MSBuild 3.5.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project DefaultTargets="CreateItems" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CreateItems">
<ItemGroup>
<Exe Include="..\**\*.exe" />
</ItemGroup>
<ItemGroup>
<TransformedExe Include="@(Exe->'%(Relativedir)')"/>
</ItemGroup>
<Message Text="1 - @(Exe)" />
<Message Text="2 - @(TransformedExe)" />
</Target>
</Project>