The return address is an ASM label. The value that you push for "push return-address" in the call pseudocode is the ROM address of the label.
// call fn 1
    @RA$3
    D=A
    // code to do "push D"
    // remaining "call" code, ends with ...
    @fn
    0;JMP
(RA$3)
The "goto RET" in the return pseudocode is
// return
    // frame and return value code...
    @R15    // or R13 or R14, whatever you used for "RET"
    A=M
    0;JMP
The number in the return address labels does not need to be the VM command number, it just needs to be unique for each instance of a call command, the same way the labels used in "gt", "lt" and "eq" need to be unique for each instance.
--Mark