Seems my issue is mostly due to me using streaming sounds when I should be using non-streaming.
Jabberwocky's comment about multiple file handles could be the issue, although internally all streamed sounds are updated sequentially so there shouldn't be any simultaneous file access. There will be multiple DataStreamPtr handles to the same file but as I perform updates in sequence I assumed there wouldn't be any conflict, I also assumed each handle would have members keeping hold of each current data position so it was possible to create multiple streamed sounds from the same file, maybe I'll try to test this and see...
yeah - it actually works well enough in some cases - but when there's a mass of ships (so a mass of sounds) then the crash would occur.
Anyways I switched to non-streaming - also I turned off the queueing of sounds (which was the reason I switched to streaming in the first place) - I think there's a bug in there somewhere (in the queueing of sounds that are out of audible range). My sounds are mostly short explosions so I don't need queueing so I disabled em, works really well now.