Lo de modificar los fuentes de Delphi no lo veo viable.
1 - No sé si será legal eso de modificar el menu.pas.
2 - No aseguras compatibilidad con programas que ya funcionen.
Lo que se me ocurre es crearte tu nueva unidad PrivMenu.pas pegando todo el contenido de la unidad de delphi (repito, no sé si legalmente puedes hacer eso), renombrando las clases a TPrivMenu, TPrivMenuItem, etc.
A partir de aquí ya eres "libre" . Después podrás instalar el componente como uno más de delphi.
Con un TActionList, no tendrías que reinventar nada. Cada TAction tiene su propiedad Tag y ahí puedes guardar el nivel de privilegios que haría falta para mostrar ese TAction, Con un simple bucle puedes recorrer todos los TActions inhabilitándolos, hacerlos invisible, etc.
Código Delphi
[-]
for i:= 0 to actionlist1.count -1 do
actionlist1.Actions[i].Visible := actionlist1[i].tag <= PrivilegioDelUsuario
Si en cada ventana existen controles que puedan ser invisibles para ciertos usuarios, yo añadiría herencia visual, es decir crear un formulario en blanco que contenga un ActionList y una propiedad Privilegio:integer, Al asignar el Privilegio haría lo propio con los Actions que haya en la ventana.
Habrá otras muchas formas de implementar privilegios, pero dependerá de tus necesidades.
Saludos