1. No, commands are registered at the Discord API level. No this is not a Sapphire or DiscordJS limitation, it just just how the Discord API handles slash commands.
2. Instead of pre-defining options you should use auto completion which can be filled dynamically, for example try using /pokedex from @Dragonite which also queries an API for its options.