Pretty much your approach.
I would start with the simplest option: 1M 3M. Now, there are two possible contracts 3M and 4M. DD analysis, each hand considered at a fixed vul setting. Comparing accepting vs not.
Once this works, move to different vuls. Once that's done, start encoding simple ...
Same experience with simulations of similar situations. My approach is Stayman. If relays are available after Stayman, ask to ensure partner is not 4432/5332 before blasting to 4H.
From a quick and dirty simulation for nine card, and longer, fits:
* Only 9-card spade fit: around 39%
* Only 9-card heart fit: around 9%
* 9-card fits in both spades and hearts: 3%
Based on the above, does it feel ok to (likely) bury the heart fit - 9% of the time?
We bid game. We also demonstrated that we don't have the usual HCP strength for 3NT. The 2D bid is limited, so is the 3D bid. Not to mention the 3D bidder passed originally. All this is not sufficient to setup a forcing pass at any vul IMO.
The point is whether we reach 4♥. Partner had: ♠AJ94 ♥QJ8 ♦AJ62 ♣J2. South has a border line opening. When South opens 1♦, West overcalls 1♥ and East is in game.