We can redefine \textcite(s) to be wrapped in parentheses (quite) easily by
\makeatletter
\DeclareCiteCommand{\cbx@textcite}[\mkbibparens]
{\usebibmacro{textcite:init}}
{\usebibmacro{citeindex}%
\usebibmacro{textcite}}
{}
{\usebibmacro{textcite:postnote}}
\DeclareMultiCiteCommand{\cbx@textcites}[\mkbibparens]{\cbx@textcite}{}
\makeatother
If you want a new command \textcitep for that we will also have to copy some more definitions from numeric.cbx and adapt that.
Then we need
\makeatletter
\DeclareCiteCommand{\cbx@textcitep}[\mkbibparens]
{\usebibmacro{textcite:init}}
{\usebibmacro{citeindex}%
\usebibmacro{textcite}}
{}
{\usebibmacro{textcite:postnote}}
\DeclareMultiCiteCommand{\cbx@textciteps}[\mkbibparens]{\cbx@textcitep}{}
\DeclareCiteCommand{\textcitep}[\cbx@textcite@init\cbx@textcitep]
{\gdef\cbx@savedkeys{}%
\citetrackerfalse%
\pagetrackerfalse%
\DeferNextCitekeyHook%
\usebibmacro{textcite:init}}
{\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
{\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}%
\global\clearfield{multipostnote}}
{}%
\xappto\cbx@savedkeys{\thefield{entrykey},}%
\iffieldequals{namehash}{\cbx@lasthash}
{}
{\stepcounter{textcitetotal}%
\savefield{namehash}{\cbx@lasthash}}}
{}
{\protected@xappto\cbx@savedcites{%
[\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}}
\DeclareMultiCiteCommand{\textciteps}[\cbx@textcites@init\cbx@textciteps]{\textcitep}{}
\makeatother
to create a new \textcitep and a new multicite \textciteps.
MWE
\documentclass{article}
\usepackage[
style=numeric,
backend=biber,
uniquename=true,
uniquelist=false,
maxcitenames=2,
natbib=true ]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\DeclareCiteCommand{\cbx@textcitep}[\mkbibparens]
{\usebibmacro{textcite:init}}
{\usebibmacro{citeindex}%
\usebibmacro{textcite}}
{}
{\usebibmacro{textcite:postnote}}
\DeclareMultiCiteCommand{\cbx@textciteps}[\mkbibparens]{\cbx@textcitep}{}
\DeclareCiteCommand{\textcitep}[\cbx@textcite@init\cbx@textcitep]
{\gdef\cbx@savedkeys{}%
\citetrackerfalse%
\pagetrackerfalse%
\DeferNextCitekeyHook%
\usebibmacro{textcite:init}}
{\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
{\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}%
\global\clearfield{multipostnote}}
{}%
\xappto\cbx@savedkeys{\thefield{entrykey},}%
\iffieldequals{namehash}{\cbx@lasthash}
{}
{\stepcounter{textcitetotal}%
\savefield{namehash}{\cbx@lasthash}}}
{}
{\protected@xappto\cbx@savedcites{%
[\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}}
\DeclareMultiCiteCommand{\textciteps}[\cbx@textcites@init\cbx@textciteps]{\textcitep}{}
\makeatother
\begin{document}
Text \textcites{knuth:ct:c, companion}. See also \textcite{knuth:ct:d}.
Text \textciteps{knuth:ct:c, companion}. See also \textcitep{knuth:ct:d}
\printbibliography
\end{document}
