I think inheritence is a good idea in you case, but you went for the wrong type of inheritence.
Maybe you shoud have a look at the section "Concepts - Entity inheritance and relational models" in the manual.
You'll see that LLBLGen allows to implement two type of inheritence.
The one you tried, which is called TargetPerEntity, implies that your child entities hold specific data. It involves using a common table with the shared columns and specific tables for each one of the child entities, with only the specific columns for each entity and a primary key made of the foreign key to the master table.
In you case, you don't want to discriminate the entities by the type of data they hold, but simply make it an arbitrary hierarchy.
Using a dedicated column in a single shared table seems to be the recommendated way, and LLBLGen allows you to still make use of hard coded different classes.
That second mechanism is called TargetPerEntityHierarchy. You can define it in the designer by opening the contextual menu on the master entity and click "Create Sub type for that Entity"
It will the ask for the column to discriminate the child entities, and generate the code you wish.
So you might go with a single table Person with a column PersonType which you use to discriminate the child entities. Once you're done with the designer, you should be able to use "ProofreaderEntity" and the other ones just as you did with your previous code.