Short Answer
You want \boldsymbol{\hat{#1}}, not \hat{\symbf{#1}} or \hat{mathbf{#1}}.
Long Answer
There are three different commands to use some kind of “bold math” in unicode-math, and each does a different, specific thing. There are also ways to redefine the behavior of all of them.
The \symbf command substitutes alphanumeric symbols with the bold variants in the Mathematical Alphanumeric Symbols block of Unicode, from the same math font. So, $A$ would be by default 𝐴 (U+1D434, Mathematical Italic Capital A), and $\symbfit{A}$ would be 𝑨 (U+1D468, Mathematical Bold Italic Capital A), from the regular math font. Another alias for this symbol is $\mbfitA$. You can change this alphabet with \setmathfont[range=bfit], [range=bfup], etc. It has no effect on symbols other than the ones defined to have variants in Unicode. This is why (as you noticed), \symbf{\hat{#1}} does not work.
The \mathbf command in unicode-math is for bold upright words in math mode. By default, this uses the bold text font, but you can change this with \setmathrm[BoldFont = ...]. There is also a \setboldmathrm command (see the fontspec manual) to change the \mathrm, \mathbf, \mathit etc. fonts in the bold math version. Because you might have to copy over old formatting that uses \mathbf for symbols such as vectors, there is a \usepackage[mathbf=sym]{unicode-math} package option to interpret \mathbf as an alias for \symbfup instead. I personally like to use the amstext commands for words in math mode instead of \mathrm, \mathbf, etc.
Finally, what you seem to want is the bold math version, which loads a heavier OpenType math font. You switch to bold math before entering math mode with \boldmath or \mathversion{bold}, or you can use it within math mode as $\boldsymbol{\hat{x}}$. (The definition of \boldsymbol is in amsbsy.)
Note that the OpenType math font you load with \setmathfont[version=bold] will have its own Mathematical Alphanumeric Symbols block, so $\boldsymbol{\mathbf{A}}$ works and gives you an even heavier symbol (corresponding to \hm in the legacy bm package). This is mainly useful for being able to use bold symbols in titles. If you define your header formatting as \large\bfseries\boldmath, and then define your vector symbols with something like \newcommand\vectorsym[1]{\symbfit{#1}} (and you will thank yourself later for making it easy to change to a different house style), you can now write something like:
\section{Calculating \(m\vectorsym{v}\)}
Also, be warned: as of 2022, you cannot \setmathfont to use both range= and version= at the same time.
\mathxxis a font change but\symbfisn't a font change bu a "Unicode shift" up to the Unicode math alphabets in the block starting U+1D400, taking the characters from the current font compare A (a normal A, bold) and 𝐀 which is a Unicode math bold Aversion=boldsetting does not affect the font commands in normal math at all, that is setting up the font for bold math formulae, ie in the scope of\boldmathcompare$x$and\boldmath $x$\mathbfthe bold math font is used. However, symbols are now typeset upright. If I use\mathbfitthe bold math font is no longer used. This seems very strange to me. What is even the purpose of a specific bold math font then? I think I don't really understand the usecase...\boldmathsets the entire equation in the bold version, some people prefer that as a non-semantic stylistic device for math in headings for example. compare\textbf{some bold text $e=mc^2$ with math}and\textbf{\boldmath some bold text $e=mc^2$ with math}