We ran into similar issues. From there I went one step further and wrote a tool to do the attachments for me (instead of using Terraform's aws_volume_attachment):
https://github.com/sevagh/goat
This way in Terraform I provision a group of volumes, a group of instances, and rely on `goat` to do the rest.