Lets call your plot res
.
res = RegionPlot[And @@ Table[
Dot[{Phi1, Phi2}, Eta[b]] <= Norm[NI[Pi] - Eta[b]]^2 + 2, {b, 0,
2 Pi, 2 Pi/10}], {Phi1, -7, 7}, {Phi2, -7, 7}];
Lets extract the mesh Mathematica is generating by default. Use more PlotPoints
to get more triangular mesh of your 2D region.
pts = res[[1, 1]]; (* Vertices *)
{triangles, qd} = Cases[res[[1]], Polygon[{a___}] -> {a}, Infinity]; (* Triangle and Quads*)
quadTotri = Flatten[{Drop[#, {2}], Take[#, 3]} & /@ qd, 1];(* Quad to Triangle*)
Graphics[{FaceForm[], EdgeForm[Red],GraphicsComplex[pts, Polygon@triangles],
FaceForm[],EdgeForm[{Blue, Dashed}], GraphicsComplex[pts, Polygon@quadTotri]}]

Now create a distribution based on the area of those triangles.
allTrig = triangles~Join~quadTotri;
vetices = (Extract[pts, Transpose@{#}] & /@ allTrig);
area = .5 Det@((Append[#, 1]) & /@ #) &; (* Calculate area of triangle *)
dat = area /@ (Extract[pts, Transpose@{#}] & /@ (allTrig));
d = EmpiricalDistribution[dat -> Range[Length@allTrig]];
Use random barycentric coordinates to choose the random points from those triangles.
Randpts = (Dot[#/Total[#] &@RandomReal[1, 3], #] & /@
Transpose@vetices[[#]]) & /@ RandomVariate[d, 1000];
Show[res, Graphics[{Red, PointSize[Small], Point /@ Randpts}]]
Tuning:
Using suggestions from @ybeltukov the above can be tied in a function. It takes as argument the RegionPlot
graphics output of your region and the number $n$ of random points you want to pick/sample from the region.
Clear[RegionRandom];
RegionRandom[plot_Graphics, n_] := Block[{pts, triangles, qd, quadTotri,
allTrig, vetices, areas,
empdist, u0, u1, u2, CustomDistribution, rp},
pts = plot[[1, 1]];
{triangles, qd} =Cases[plot[[1]], Polygon[{a___}] -> {a}, Infinity];
allTrig =
triangles~Join~Flatten[{Drop[#, {2}], Take[#, 3]} & /@ qd, 1];
vetices = (Extract[pts, Transpose@{#}] & /@ allTrig);
areas =
0.5 Abs[#1[[All, 2]] #2[[All, 1]] - #1[[All, 1]] #2[[All,
2]]] &[#[[All, 2]] - #[[All, 1]], #[[All, 3]] - #[[All,
1]]] &@vetices;
empdist = EmpiricalDistribution[areas -> Range@Length@vetices];
u0 = vetices[[All, 1]];
u1 = vetices[[All, 2]] - u0;
u2 = vetices[[All, 3]] - u0;
CustomDistribution /:
Random`DistributionVector[CustomDistribution[], p_Integer,
prec_?Positive] :=
Module[{s =
RandomVariate[DirichletDistribution[{1, 1, 1}], p,
WorkingPrecision -> prec],
m = RandomVariate[empdist, p, WorkingPrecision -> prec]},
u0[[m]] + s[[All, 1]] u1[[m]] + s[[All, 2]] u2[[m]]
];
rp = RandomVariate[CustomDistribution[], n]
];
Lets test it with above RegionPlot
named res
for $40000$ random points.
pt = RegionRandom[res, 40000];
Show[res, Graphics[{Red, PointSize[Tiny], Point /@ pt}]]

Also some fun with nontrivial 2D regions.

Result is not too bad! You can use this answer to create nicer 2D mesh of your region than the default one. I may update that later!
Comparison:
Histogram: First lets see the histogram for $20000000$ sample!
Histogram3D[RegionRandom[res, 20000000], 25]

Entropy of generated data: We know entropy is an information theoretic metric to measure the intrinsic randomness of sample. We use Entropy
function to test which algorithm provides more randomness.

Mahalanobis distance: We also compare the Mahalanobis distance pdf of both the sample generators as it gives a visual presentation of their mutual disagreement.
n=50000; (* reduce n to as the following is very memory intensive ~ I had 64 Gb RAM *)
{TrigData, MetData} = {RegionRandom[res, n],
RandomVariate[Metropolis[pdf, {2, 0}], n]};
MahalanobisDistance[data_] :=
Block[{m = Mean[data], cov = Inverse[Covariance[data]], temp},
temp = (#1 - m &) /@ data; Diagonal[temp.cov.Transpose[temp]]]
dist = SmoothKernelDistribution[MahalanobisDistance[#]] & /@ {TrigData, MetData};

Timing: The Metropolis algorithm performs faster after compilation by @ybeltukov
pt1 = RandomVariate[Metropolis[pdf, {2, 0}],20000000]; // AbsoluteTiming
{9.653125, Null}
pt = RegionRandom[res, 20000000]; // AbsoluteTiming
{14.207429, Null}
EmpiricalDistribution
orSmoothKernelDistribution
on these points to define a distribution. Using this, it should be quicker and easier to generate lots more data that lies in the shape you want. $\endgroup$randomPoints = Compile[{{n, _Integer}, {scale, _Real}, {sectors, _Integer}}, Module[ {v, r, rot, pt, c, s}, r = scale*Sec[Pi/sectors]; v = r*Sin[Pi/N[sectors]]; Table[rot = RandomInteger[{0, sectors - 1}]; pt = {RandomReal[{0, scale}], RandomReal[{0, v}]}; c = Cos[2.*Pi*rot/sectors]; s = Sin[2.*Pi*rot/sectors]; If[pt[[2]] > pt[[1]]*v/scale, pt = {scale - pt[[1]], pt[[2]] - v }]; {{c, s}, {-s, c}}.pt , {n}]]];
$\endgroup$