If the only thing you can watch that even identifies whether the spell has procced is
SPELL_DAMAGE, and it only has a chance of happening after casting Envenom or Rupture, then you can possibly measure the time difference between the
SPELL_DAMAGE event and when the last Envenom or Rupture was cast (on the same target) to gauge whether it was spawned by a new cast or not.
This relies on relatively stable timings, so it might not be a particularly good solution, but it doesn't look like there are a lot of alternatives here.
You can also judge by how frequently the damage ticks are happening on a particular target (eg. if the pool ticks every 0.5ish seconds, but the mob took 2 hits before the next tick should have happened, there must be more than one out).
I pulled up a random assassination rogue on
warcraftlogs to check timings, it might help you with this if you want to go that route.