I’m proposing something more like b). Create the bare actor. Configure whatever properties are needed. Then start playing, which will setup the actor based on the config. The config, if you use deferred spawning and not blueprints, can come through expose-on-spawn pins, or it can be done by poking at either a “spawn config” struct member, or a number of known specific members.
Whether those members are “wasted” is a bit of a philosophical question. Their cost is not particularly high, and if your game wants to support “reset player to initial state” without having to re-load the world from scratch, it can come in quite handy!