I have just started with Lego, building the excavator with the 2 Bluetooth hubs. Can I program a model I build using this type of hub and motors or do I require EV3 (if indeed EV3 allows you to control motors in a non-robotic setup)? The phone app only seems to give you Lego's own models, and no program blocks.
I'm assuming you are using the Control+ app with the 42100 liebherr r 9800 set. The Control+ app is indeed limited to the fixed models. However the Powered Up app can also connect to the Control+ hub and supports it reasonably well. The Powered Up app has a "Create" mode where you can use programming blocks, it's similar to the Scratch educative programming environment. You'll easily find the app in your app store on your device.
Note that contrary to EV3, Spike Prime or the new robotics set, code runs mostly on your smart device. I.e. you cannot operate your model without your smart device. However, the micro-controller on the Control+ smarthub (Or the Powered Up or Boost smarthub for that matter) is powerful enough to run a version of MicroPython. This is used in the Pybricks project, which allows you to code the smarthub directly in Python. https://pybricks.com/about/