The best way for receiving incoming calls while Zoiper is in background is to use TCP or TLS instead of UDP. This could be set from the Network settings menu in the account configuration. Please also be advised that TCP and TLS must be supported by your VoIP provider as well, otherwise your account will not register.
If for some reason, you are not able to use anything else than UDP, you may enable both options in the Incoming calls section from Zoiper's Settings menu.
In addition, please also check whether all notifications are enabled for Zoiper in the iOS Settings menu -> Notifications.
As for the VPN, Zoiper uses the default network of the device, so if the device stays connected to the VPN, then Zoiper also will be using it. In case the device disconnects from it, Zoiper is not able to force it to connect again - restrictions from Apple.