perf(canopy-enrollment): bulk query + caching for issuance listings

The issuance listing endpoint currently does one DB round-trip per issuance when hydrating related records. The plan flagged bulk fetch + caching as premature until the reporting pipeline is stressed at real scale.

Fix when profiling (or a real regression) shows the single-row fetch pattern is the bottleneck. Until then, the pattern is acceptable.

Extracted from canopy-enrollment-household-issuances.adoc § Potential Improvements.