Transmission #061: Loot tables return internal models

Loot table repository mapping

LootTableRepository.getLootTablesForItems now hydrates InternalLootTable models from jOOQ rows instead of stopping at the join scaffold. The repository filters by harvested item ids, preserves deterministic ordering, groups entries under each loot table, and carries the timestamp and reward-count fields into the internal loot entry model so server-side item drops can use the typed model path.