Wrap the button in a dataview with microflow datasource that takes the project as input parameter and returns a user/account. Retrieve the first account that is the current user and is not already associated with the project. Then use conditional visibility to not show the button if the returned object is empty. This way you can also maybe lose the dataview around the grid, as you can use the returned account as input parameter for your button.
Example to retrieve the account in the microflow:
[id = '[%CurrentUser%]']
[not(YourModule.Project_Account = $Project)]
$currentObject/EC2_new.Project_AccountApplicant != $dataView1
This assumes a *-to-1 from Project to Account. Your condition tries to use the contain function which is a string checker. You need to check whether the id at the end of the association is the id of the current account. My answer is how you'd do that in your situation, if my assumption is correct.