How to perform spectral inversion in the frequency domain to convert a low-pass filter into a high-pass filter?
The flaw in your logic is assuming that the frequency response of your lowpass filter in its passband is identically $1$. You're inherently assuming this when thinking that you can form the highpass filter by simply calculating $H_{hp}(f) = 1 - H_{lp}(f)$. 

However, the lowpass filter has group delay because the peak of the sinc function doesn't occur at $n = 0$. Instead, as a symmetric FIR filter, it will have a delay of $\frac{N}{2}$ samples, where $N$ is the filter order. This means that the frequency response of the filter across the passband may have unity magnitude, but it will have linear phase! Recall the time shift property of the discrete-time Fourier transform:

$$
x[n-k] \Leftrightarrow X(f)e^{-j2\pi fk}
$$

So, instead of your prototype lowpass filter having a response of $1$ in the passband, it actually has a response of $e^{-j2\pi fk}$, which imparts a phase shift that is linearly proportional to frequency. If you would like to transform this filter to a highpass structure with equivalent group delay, you would need to take this into account when synthesizing your highpass filter in the frequency domain:

$$
H_{hp}(f)= e^{-j2\pi f\frac{N}{2}} - H_{lp}(f)
$$