I think it is important to clarify what break means in this case.
I agree with you that as software engineers/developers we may find ourselves frequently loosing focus on long periods of time, or also being stuck fixing some bug or designing some complex method. As a result, is is not rare for Software Engineers/Devs to take a "break" from their current tasks to freshen up their minds.
However, having experienced this situation you are mentioning, I must confess that those "breaks" I take are far from being a moment of idleness or leisure. Usually a break in those cases really means: background processing the task I am stuck/lost focus while doing other work-related tasks. Even in the cases where one is not doing other tasks in the meantime you are actually thinking of that problem, until you get that Aha Moment or some other sort of inspiration to continue that task.
Now, considering that definition of "taking a break":
Is it a common business practice to include these short breaks into the hours billed to client?
You could say yes, as long as those breaks are not leisure/idle moments. Also, as you say, as long as they are short (relativelly of course) breaks. During those breaks you can also do other tasks on the project for that client, being that billable time.
Is it considered professional for the engineer to report these breaks as working time?
This depends, as long as that break time is reasonably long/short and those breaks are not that frequent. Also, it would be ok to report them if you were actually background processing some task related to the project, but would not be ok or professional to report them if you were doing unrelated tasks in the meantime (like other projects or leisure time).
Does it make any difference if the engineer is a freelance contractor as against an employee of a company?
In your first question it does make a difference, as in freelancing you decide what you are billing to your client, but if you are an employee then this is something your boss or manager usually decides, so most probably in the latter case it will not be up to you to decide what is billed to the client.
Now, in your second question it does not make a difference, as in both cases (freelance vrs. employee) it is up to you to decide what you report as work time. The difference is that when freelancing you also decide what/how that reported work time is billed, but when you are an employee that is something your boss or manager should decide.
As an example, say you report
X working hours to your boss, but he decides to charge the client
$0 for them. You are still getting your paycheck at the end of the month, even though your boss decided not to bill this to the client. You can see how this would be different if you were a freelancer instead, as you will be getting nothing for those