Eventually sorted this out on my own. Simple answer is NO, this is not the purpose of Price Resolvers. Price Resolvers can be used to "statically" set a price based on something which does not change during the php session - such as location, year, etc. But if you need to modify the price due to user input at the time; the correct solution is to set the Unit Price.
Before looking at Resolvers I already had this code:
  $order_item = OrderItem::create([
    'type' => $item_type,
    'purchased_entity' => $variation->id(),
    'quantity' => isset($options['qty']) ? $options['qty'] : 1,
    'unit_price' => $my_dynamic_price,
  ]);
and I have seen posts and had been given suggestions that this works. It does not. Setting the unit_price at the time of OrderItem::create has no impact on the item's price. The correct way to do this is with the setUnitPrice() method like this:
  $order_item = OrderItem::create([
    'type' => $item_type,
    'purchased_entity' => $variation->id(),
    'quantity' => isset($options['qty']) ? $options['qty'] : 1,
    'unit_price' => $variation->getPrice(),  // may be overwritten by $options['cost']
  ]);
  // If we are setting a custom cost, override unit_price now.
  if (isset($options['cost']) && $options['cost']) {
    $order_item->setUnitPrice($options['cost'], TRUE);;
  }
  $order_item->save();