Hi Graeme - Can you help answer the following questions to help us understand the issue better?
How big is the arp and mac table? (show arp, show mac-add)
How many unit in the stack?
What version of code it's running? Is this routing or switching code?
Do you have igmp snooping (multicast active/passive) and/or PIM (sparse/dense) enabled? check these output:
show run | inc multicast|pim
show ip pim mcache (collect 3x)
show multicast mcache (collect 3x)
In this case, it might be best to open case with support with the above output and showtech so we can help investigate the issue more accurately.
Thanks,
Vu