You're correct, there's no way to get the project name itself other than parsing it out of the project.filename property. There are a couple of ways to work around this though:
1- Use project.TestItems.Current.Name to get the name of the currently running test item, but that's for the test item itself, not the project.
2- Create a Persistent Variable on the Project that has a Local Value for how you want the project to be referenced.
Personally, I use option 2 for all my projects. I call the variable projectName and set the Local Value when I create the project. Then when I need to use it, I just use project.variables.projectName. I also have a corresponding variable at the project suite level called suiteName.