I think an Orchestration is the only way to do this. A pipeline would create 100 instances and you can’t really group inside them.
Depending on the size, you could end up running out of memory inside BizTalk.
Maybe a custom adapter could work.
This doesn’t really sound like something that BizTalk would really excel at. I think you could use a .net component to do this with minimal effort. That would be called through an Orchestration if needed.
Just my thoughts.