How can I reduce my code to draw this polyhedron?

You can reduce the code for the coordinate definitions using four rotations around the vertical axis and a \foreach. (To save two lines, I gave directly the sine and cosine values to the foreach, as those are only -1, 0 and +1.)

Unfortunately, I don't know an easy (and automatic) way to know if and edge should be dashed or not, so I drew every edge by hand...

\documentclass[border=2mm,12pt,tikz]{standalone}
\usepackage{tikz,tikz-3dplot} 
\begin{document}

\tdplotsetmaincoords{60}{135}
\pgfmathsetmacro\a{4}
\pgfmathsetmacro{\b}{\a/2}    
\begin{tikzpicture}[tdplot_main_coords]

%% Coordinate definitions
\foreach \n/\vcos/\vsin in { 0/1/0, 1/0/1, 2/-1/0, 3/0/-1 }{
  \coordinate (A\n) at (\b*\vcos          , \b*\vsin          , -\a);
  \coordinate (B\n) at (\a*\vcos          , \a*\vsin          , -\b);
  \coordinate (C\n) at (\a                ,       \b          , 0  );
  \coordinate (C\n) at (\a*\vcos-\b*\vsin , \vcos*\b+\a*\vsin , 0  );
  \coordinate (D\n) at (\a*\vcos+\vsin*\b , \a*\vsin-\vcos*\b , 0  );
  \coordinate (E\n) at (\a*\vcos          , \vsin*\a          , \b );
  \coordinate (F\n) at (\b*\vcos          , \b*\vsin          , \a );
}

%% Edge with thick and dashed
\draw[ultra thick] (F0) edge(E0) -- (F1) edge (E1) -- (F2) edge (E2)
-- (F3) edge (E3) -- (F0) (E0) edge (D0) -- (C0) edge (D1) -- (B0) -- (A0)
-- (A1) -- (B1) -- (D1) -- (E1) -- (C1) edge (B1) -- (D2) -- (E2)
(E3) -- (C3) -- (D0) -- (B0);
\draw[dashed] (A1) -- (A2) -- (A3) edge (A0) -- (B3) edge (C3)
-- (D3) edge (E3) -- (C2) edge (E2)--(B2) edge (D2)--(A2);

\end{tikzpicture}
\end{document}

Just for fun. This draws hexagons in various rotated coordinates. This would in principle be enough if there were not the obnoxious dashed lines. To have some edges not (!) dashed, this requires some extra effort (last bit of the code).

\documentclass[border=3.14mm,tikz]{standalone}
\usepackage{tikz-3dplot} 
\usetikzlibrary{calc}
\tikzset{hexagon defined by/.style args={#1 and #2 with label #3}{insert path={
 -- ++ ($-1*#2$) coordinate (#3-2) 
-- ++ #1 coordinate (#3-3) --++ ($#1+#2$) coordinate (#3-4) 
-- ++ #2 coordinate (#3-5) -- ++ ($-1*#1$) coordinate (#3-6) 
-- ++ ($-1*#1-1*#2$) coordinate (#3-1)
}}}
\begin{document}
\tdplotsetmaincoords{60}{135}
\begin{tikzpicture}[tdplot_main_coords,scale=1,line join = round, line cap = round]
 \pgfmathsetmacro\a{4}
 \pgfmathsetmacro{\b}{\a/2}
 \foreach \X/\Y/\Z [count=\NN] in {0/0/0,%back
 90/90/-90,% back bottom
 -30/0/-60,%back upper left
 30/0/60,%back upper right
 0/00/180,% top (first visible)
 90/90/0,%front lower right
 -90/90/00,%front lower left
 90/180/0%front
 }
 {\tdplotsetrotatedcoords{\X}{\Y}{\Z}
 \begin{scope}[tdplot_rotated_coords]
  \ifnum\NN<5
   \draw[very thick,dashed,fill opacity=0.5] (\a,0,\b) 
   [hexagon defined by={(\b-\a,\a-\b,0)} and {(0,-\b,\b)} with label H\NN];
  \else
   \draw[very thick,fill=white,fill opacity=0.5] (\a,0,\b) 
   [hexagon defined by={(\b-\a,\a-\b,0)} and {(0,-\b,\b)} with label H\NN];
  \fi 
 \end{scope}}
 \draw[very thick,fill=white,fill opacity=0.5] (H5-4) -- (H7-5) -- (H7-6) -- (H5-3) --cycle
 (H5-1) -- (H6-4) -- (H6-3) -- (H5-2) --cycle
 (H7-1) -- (H6-2) -- (H6-1) -- (H7-2) --cycle;
\end{tikzpicture}
\end{document}

enter image description here

And since the dash patterns do not necessarily match, one has unfortunately some not so nicely dashed lines as some lines get drawn twice.

If you do not insist on dashed lines (but are happy with the hidden lines being covered by an opaque surface), you could just do

\documentclass[border=3.14mm,tikz]{standalone}
\usepackage{tikz-3dplot} 
\usetikzlibrary{calc}
\tikzset{hexagon defined by/.style args={#1 and #2 with label #3}{insert path={
 -- ++ ($-1*#2$) coordinate (#3-2) 
-- ++ #1 coordinate (#3-3) --++ ($#1+#2$) coordinate (#3-4) 
-- ++ #2 coordinate (#3-5) -- ++ ($-1*#1$) coordinate (#3-6) 
-- ++ ($-1*#1-1*#2$) coordinate (#3-1)
}}}
\begin{document}
\tdplotsetmaincoords{60}{135}
\begin{tikzpicture}[tdplot_main_coords,scale=1,line join = round, line cap = round]
 \pgfmathsetmacro\a{4}
 \pgfmathsetmacro{\b}{\a/2}
 \foreach \X/\Y/\Z [count=\NN] in {0/0/0,%back
 90/90/-90,% back bottom
 -30/0/-60,%back upper left
 30/0/60,%back upper right
 0/00/180,% top (first visible)
 90/90/0,%front lower right
 -90/90/00,%front lower left
 90/180/0%front
 }
 {\tdplotsetrotatedcoords{\X}{\Y}{\Z}
 \begin{scope}[tdplot_rotated_coords]
   \draw[very thick,fill=white,fill opacity=0.7] (\a,0,\b) 
   [hexagon defined by={(\b-\a,\a-\b,0)} and {(0,-\b,\b)} with label H\NN];
 \end{scope}}
  \draw[very thick,fill=white,fill opacity=0.7] (H5-4) -- (H7-5) -- (H7-6) -- (H5-3) --cycle
 (H5-1) -- (H6-4) -- (H6-3) -- (H5-2) --cycle
 (H7-1) -- (H6-2) -- (H6-1) -- (H7-2) --cycle;
\end{tikzpicture}
\end{document}

enter image description here

This approach would in principle allow for an automatized determination which lines are hidden, something I do not want to pursue here since this post has a very nice accepted answer, which deserves to stay the accepted answer.