I actually capture our UTMs in their own eVars (Visit level), and I have them combined in Tracking Code (7 Days expiry), and then I have rules for Marketing Channels using our UTMs (among other things like referrers, etc) also with a 7 day expiry.
So using your own eVars isn't weird at all... I still wouldn't mix External and Internal Campaigns (unless your apps are tracking to a completely different suite, and therefore the apps are considered "external"). Ahhh, actually I just realized the detail about "no tracking on the current app").. so let's go with "UTMs" for now, but future enhancements may make more work to make these internal if tracking is added later.
And like I said, I wouldn't worry about your "Entry Page" dimension. Let's look at a sample:
Example:
- User opens app
- Navigates around, then clicks on a link with the Campaign (UTMs or ITMs)
- (Website is opened, either in the browser, or in a webview inside the app)
- Page A (with UTMs)
- Page B
- Page URL is tracked (https://www.domain.com/pageB/)
- eVar1 maintains value "app" due to Visit Attribution
- eVar1 Instance is not incremented (eVar1 was maintained not set)
- eVar2 maintains value "promoX" due to Visit Attribution
- eVar2 Instance is not incremented (eVar2 was maintained not set)
- etc
If you want the point in which your eVars are set (and not the maintained),
You can simply make a segment like:
HIT
eVar1 (instance) equals app
AND
eVar2 (instance) equals promoX
You can set your Dimension to match only the instance:

Or you can do it a longer way, leaving the default behaviour on your eVars, and just adding the Instance metric for both of them:
HIT
eVar1 equals app
AND
eVar1 Instance exists
AND
eVar2 equals promoX
AND
eVar2 Instance exists

If you need to attribute the campaign to a conversion.. then the entry / instance doesn't matter... the UTM eVars are Visit level and Last Touch, so all you have to do breakdown your Conversion metric with your UTMs to see all... or if you need to isolate your App specific ones, you can just use:
VISIT
HIT container
eVar1 equals app
AND
eVar2 equals promoX
AND
Conversion Metric exists
I really dislike the way the "Entry" versions are calculated... basically it's the first value of the visit that was seen.... which in this simple example should work, but it's not really needed... getting the hit with the instance of your eVars is super easy... and IF for some reason the first hit on your site happens to be an action instead of a page (and maybe your prop1 isn't set on actions), you aren't going to loose any visits.