You can use texture bombing or the texture variation node to break up the repetition if you go the texture route. Otherwise, if you go the mesh route, Instanced Static Meshes are efficient.
Disclaimer: One or more of these links are unaffiliated with Epic Games. Epic Games is not liable for anything that may occur outside of this Unreal Engine domain. Please exercise your best judgment when following links outside of the forums.