Thanks for the reply! As I was drafting a response I seem to have fixed my bug.
Part of my previous python3 pseudocode for 'call functionName nargs':
retAddrLabel = "@ret_{functionName}_{callCount}"
callCount += 1 # incremented when translating 'call' instruction only
Changed as follows, all tests pass:
retAddrLabel = "@ret_{functionName}_{globalCount}"
globalCount += 1 # incremented when translating any instruction, not just 'call'
It seems that it's not sufficient to simply increment a count for each time a function call occurs in the vm code.