Form-specific evolutions are designed for Pokémon that do not change their form throughout their lifetime. To get a Raichu form 1 (Alolan), you'll need to evolve a Pikachu form 1. This form 1 Pikachu doesn't need to look any different to a regular one, or have any properties different to it, or appear in the Pokédex. All it needs is an "Evolutions=" line in "pokemonforms.txt" which makes it evolve using your new item rather than a Thunder Stone. Then you distribute wild form 1 Pikachu somehow.
For the situation you want, where a particular Pokémon may or may not change its form number upon evolution depending on the item used, you'd need to create a new evolution method for this. It would be a single method exclusive to Pikachu, and would check both possibilities at once via its code. If it is able to evolve into one of the forms, the evolution method should also set Pikachu's form to the appropriate number - fortunately, because Pikachu has no form differences, this won't cause any problems like its sprite changing just before evolving.