I have long disliked subreports and found that they are often overused. That said I still use them though sparingly.
As an alternative, I suggest you look at two things. The first is the use of command objects to query the data you use in the subreport and then place them in the way you want them displayed in the report.
The second way which may help with the first suggestion is to look at the use of groups and perhaps multiple levels of grouping.
These can really help with performance. The command objects can push a lot of processing back to the database, and grouping avoids the multiple passess for processing the report that subreports requires.
I had a similar experience with a report though not using a subreport where performance was not tolerable. By rewriting my queries I was able to reduce the report generation from many minutes to about 30 seconds. My point is that this rewriting of the queries was time well spent.
Others may have additional suggestions. I hope you can get the report.
Regards
John W.