Jager, another thing you might try doing is CopyEntity, and create "clusters" of units. For example if you had 3 "instances" of a calvary units A, B, and C, and then you copied them so you have a "formation" like so:
A B C B
C A B A
B C A B
A B C A
or something like that. That way you have 3 different animation surfaces, so essentially 3 meshes, but 16 different units. I don't know if that made sense or not, but it boils down to reducing the number of Surfaces the computer is churning through, and animating only 3 surfaces instead of 16 separate ones. Your combinations could be pretty huge by sacrificing 4 or 5 surfaces.
A B C B
C A B A
B C A B
A B C A
or something like that. That way you have 3 different animation surfaces, so essentially 3 meshes, but 16 different units. I don't know if that made sense or not, but it boils down to reducing the number of Surfaces the computer is churning through, and animating only 3 surfaces instead of 16 separate ones. Your combinations could be pretty huge by sacrificing 4 or 5 surfaces.