I wouldn't use any of those solutions.
Because that is not golden rule. On the contrary, for reference counted types you would almost always use const to avoid unnecessary reference counting overheard.
Problem is not in the method that has const, problem happens at call site. As such it should be handled at call site. First, handling it at call site allows you to trigger reference counting only for references that really need it, next, you will avoid situation where performance will become an issue and someone will go and change method signature according to common practice - using const and will inadvertently break code.
Far better solutions than 1. or 2. are using additional variable instead of constructing instance during method call, This is also easy rule to remember - don't create anything inplace.
Next solution would be explicitly typecasting TFoo.Create as IFoo
And the last one, I like the most because it prevents you to make reference counting mistakes in other code, too, is to have class function that will create instance and return it as interface reference.
As for finding all places where you can create possible problem and you need to fix it, simple search and replace can go a long way.
For instance - if you have class function New, you can just replace TFoo.Create with TFoo.New and if have same parameter list, you are good.