The rule for indexing is to ask 'Where is the content?' and 'What's the fastest route to it?'
Cross domain canonicalisation is treated like a soft redirect. You state that content is served from webapp.com/page but the URI remains domain.com/page. If you're using an iFrame pointing to webapp.com/page, Google will see it as a link and index the linked content's address. If you use a cross domain canonical tag, it might index domain.com/page.
You can canonicalise a page to another but it remains a suggestion - not a directive. If the content on each page is similar, Google may decide to merge their indexes and 'think' of them as the same page. If the content is very different then it will ignore your suggestion completely.
The only way to force it to index another page is a 301 redirect. This acts as a harder directive. It also changes the request URI.
Here's a simple flow for you to follow:
- If you ask a question of Google, where is the content that will answer it?
- Is the URI for that content the one that is going to show up as indexed?
- Will the server mess with that URI if a user clicks on it?
- Is the content going to appear dynamic (different every time)?
These are the questions Google's algorithm will ask in order to find the shortest path from it's index to the content. Any attempt to subvert that in a way that lengthens that path or diverts it, and Google will either adapt or drop the index link.
IP addresses make no difference if you're attempting to index everything under a single domain. Google was originally trained to see subdomains as entirely separate sites and it still has issues interpreting if a subdomain is part of the main site or not. Think
xxx.wordpress.com - where each hosted site has it's own subdomain.
www.wordpress.com has no impact on these subdomains whatsoever.
Quick edit: Where IP address would come into SEO is if you wanted different domains to benefit each other without being seen as part of the same C-block (indicates a lazy PBN running from the same Network). This isn't relevant as you're using the same domain name - which categorically tells Google all the sites are from the same network.