This answer has a really important input by the OP, jsb, who pointed out that what I did with the clipping was insanely complicated. Thanks a lot!
This is a first, faster version:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{decorations.pathmorphing,patterns.meta}
\pgfdeclarepattern{name=lines,
parameters={\hatchsize,\hatchangle,\hatchlinewidth,\hatchsegmentlength,\hatchamplitude},
bottom left={\pgfpoint{-.1pt}{-.1pt}},
top right={\pgfpoint{\hatchsize+.1pt}{\hatchsize+.1pt}},
tile size={\pgfpoint{\hatchsize}{\hatchsize}},
tile transformation={\pgftransformrotate{\hatchangle}},
code={\pgfsetlinewidth{\hatchlinewidth}
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,0.5*\hatchsize) -- (\hatchsize+.1pt,0.5*\hatchsize);
}
}
\tikzset{
hatch size/.store in=\hatchsize,
hatch angle/.store in=\hatchangle,
hatch line width/.store in=\hatchlinewidth,
hatch size=5pt,
hatch angle=0pt,
hatch line width=.5pt,
hatch segment length/.store in=\hatchsegmentlength,
hatch segment length=3pt,
hatch amplitude/.store in=\hatchamplitude,
hatch amplitude=1pt
}
\begin{document}
\begin{tikzpicture}
\begin{scope}[thick,
decoration={random steps,segment length=3pt,amplitude=0.45pt}]
\draw[decorate,pattern=lines, pattern color=black, hatch size=7pt, hatch angle=21,
hatch line width=0.9pt] (0,0) rectangle +(2,2);
\draw[decorate,pattern=lines, pattern color=black, hatch size=12pt, hatch angle=70,
hatch line width=0.9pt,hatch amplitude=1.4pt,hatch segment length=4pt] (3,0) rectangle +(2,2);
\end{scope}
\end{tikzpicture}
\end{document}

Note also that these are patterns, so they are fast by repeating things precisely. This means that the pattern does not look as random as it could, one can clearly see the repetition. One way to address this issue is to create a slower pattern that has several (10, say) of these lines.
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{decorations.pathmorphing,patterns.meta}
\pgfdeclarepattern{name=lines,
parameters={\hatchsize,\hatchangle,\hatchlinewidth,\hatchsegmentlength,\hatchamplitude},
bottom left={\pgfpoint{-.1pt}{-.1pt}},
top right={\pgfpoint{10*\hatchsize+.1pt}{10*\hatchsize+.1pt}},
tile size={\pgfpoint{10*\hatchsize}{10*\hatchsize}},
tile transformation={\pgftransformrotate{\hatchangle}},
code={\pgfsetlinewidth{\hatchlinewidth}
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,0.5*\hatchsize) -- (10*\hatchsize+.1pt,0.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,1.5*\hatchsize) -- (10*\hatchsize+.1pt,1.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,2.5*\hatchsize) -- (10*\hatchsize+.1pt,2.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,3.5*\hatchsize) -- (10*\hatchsize+.1pt,3.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,4.5*\hatchsize) -- (10*\hatchsize+.1pt,4.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,5.5*\hatchsize) -- (10*\hatchsize+.1pt,5.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,6.5*\hatchsize) -- (10*\hatchsize+.1pt,6.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,7.5*\hatchsize) -- (10*\hatchsize+.1pt,7.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,8.5*\hatchsize) -- (10*\hatchsize+.1pt,8.5*\hatchsize);
\draw[decoration={random steps,segment length=\hatchsegmentlength,
amplitude=\hatchamplitude}, decorate,rounded corners=1pt]
(-.1pt,9.5*\hatchsize) -- (10*\hatchsize+.1pt,9.5*\hatchsize);
}
}
\tikzset{
hatch size/.store in=\hatchsize,
hatch angle/.store in=\hatchangle,
hatch line width/.store in=\hatchlinewidth,
hatch size=5pt,
hatch angle=0pt,
hatch line width=.5pt,
hatch segment length/.store in=\hatchsegmentlength,
hatch segment length=3pt,
hatch amplitude/.store in=\hatchamplitude,
hatch amplitude=1pt
}
\begin{document}
\begin{tikzpicture}
\begin{scope}[thick,
decoration={random steps,segment length=3pt,amplitude=0.45pt}]
\draw[decorate,pattern=lines, pattern color=black, hatch size=7pt, hatch angle=21,
hatch line width=0.9pt] (0,0) rectangle +(2,2);
%
\draw[decorate,pattern=lines, pattern color=black, hatch size=12pt, hatch angle=70,
hatch line width=0.9pt,hatch amplitude=1.4pt,hatch segment length=4pt]
(3,0) rectangle +(2,2);
\end{scope}
\end{tikzpicture}
\end{document}

The result looks definitely more random but takes longer to compile. I repeated the path by hand since I had once a bad experience when using \foreach in a meta pattern declaration. However, it seems to work fine in most cases. If I ever remember the case that went bad I will add it here. I believe to remember it was in connection with either this post or this post.
\pgfdeclarepattern{name=hatch, i.e. no empty line, and (b) add\begin{document}. – Nov 19 '19 at 04:16